月色的魔术大法
题号:NC261530
时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\sf So\ let's\ pretend\ a\ little\ longer

\sf Cause\ when\ we're\ gone

\sf Everything\ goes\ on

      —— Everything\ Goes\ On,\ \text{Porter Robinson}
月色哥哥拿出了一个字符串 s 展示给氧气少年看,对氧气少年说,"你信不信我能把这个变成 t?"氧气少年看了看月色哥哥,"请开始你的表演。"

现在要将字符串 s 通过任意多次(可能是零次)操作将其变为字符串 t,操作的描述如下:
  • 让字符串 s 的一段非空子串消失,然后该区间两端的字符串会自动拼接起来。例如:当 s=\tt abcdefg 时,在让 s_2,s_3\dots s_6 消失后,有 s=\tt ag

阅读样例解释可以帮助理解上述过程。

请求出不同的操作方案种数,答案对 998244353 取模。

两种操作方案被视为不同,当且仅当这两种操作方案的操作次数不同,或者在某一次操作中选择的区间不同。

输入描述:

第一行包含一个整数 T(1\leq T \leq 5),表示测试用例的组数。

对于每组测试用例:

第一行包含两个整数 n(1\leq n\leq 50),m(1\leq m\leq n),分别表示 s 的长度和 t 的长度。
第二行包含一个长度为 n 的字符串 s,保证给出的字符串只包含小写英文字母。
第三行包含一个长度为 m 的字符串 t,保证给出的字符串只包含小写英文字母。

输出描述:

对于每组测试用例:
仅输出一行,包含一个整数,表示答案。
示例1

输入

复制
4
3 1
aba
a
9 9
moonlight
moonlight
14 7
yangqishaonian
zemboll
5 2
cccaa
ca

输出

复制
6
1
0
50

说明

对于第一组样例数据:
有如下 6 种方式:


对于第二组样例数据:
请注意上述操作可以进行零次,算作一种方案,因此答案为 1

对于第三组样例数据:
所幸的是,\tt yangqishaonian 无法通过上述操作变为 \tt zemboll,因此答案为 0