题号:NC261530
时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld
题目描述
——
月色哥哥拿出了一个字符串

展示给
氧气少年看,对
氧气少年说,"你信不信我能把这个变成

?"
氧气少年看了看
月色哥哥,"请开始你的表演。"
现在要将字符串
通过任意多次(可能是零次)操作将其变为字符串
,操作的描述如下:
-
让字符串
的一段非空子串消失,然后该区间两端的字符串会自动拼接起来。例如:当
时,在让
消失后,有
。
阅读样例解释可以帮助理解上述过程。
请求出不同的操作方案种数,答案对

取模。
两种操作方案被视为不同,当且仅当这两种操作方案的操作次数不同,或者在某一次操作中选择的区间不同。
输入描述:
第一行包含一个整数
,表示测试用例的组数。
对于每组测试用例:
第一行包含两个整数
,分别表示
的长度和
的长度。
第二行包含一个长度为
的字符串
,保证给出的字符串只包含小写英文字母。
第三行包含一个长度为
的字符串
,保证给出的字符串只包含小写英文字母。
输出描述:
对于每组测试用例:
仅输出一行,包含一个整数,表示答案。
示例1
输入
复制
4
3 1
aba
a
9 9
moonlight
moonlight
14 7
yangqishaonian
zemboll
5 2
cccaa
ca
说明
对于第一组样例数据:
有如下

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

。
对于第三组样例数据:
所幸的是,

无法通过上述操作变为

,因此答案为

。