#4468. 咒语(incantation)

咒语(incantation)

  • 时间:1s
  • 空间:512M

题目描述

在遥远的艾斯特拉王国,隐藏于幽深森林与蜿蜒山脉之间,有一个被古老魔法守护的村落——雾隐村。这个村庄世代相传着一种神秘而强大的咒语,名为“晨曦之光”,它能在最黑暗的时刻照亮希望,驱散一切邪恶与不幸。

故事的主角是一位名叫小蒙新的年轻女巫,她自小便对魔法充满了无限的好奇与渴望。小蒙新的祖母,雾隐村最德高望重的老女巫,是"晨曦之光"咒语的最后一位守护者。随着年岁的增长,祖母深知自己时日无多,便将守护咒语的重任交给了小蒙新,并在一个月圆之夜,于村中最古老的橡树下,向小蒙新传授了"晨曦之光"的奥秘。

小蒙新被传授了一串长度为 nn 的字符串 SS ,她按如下方式进行生成了一串咒语:

  1. T1=S1T_1=S_1
  2. 对于 i[2,n]i \in [2,n]Ti=Ti1+Si+Ti1T_i=T_{i-1}+S_i+T_{i-1}

其中 ++ 表示字符串拼接,SiS_i 表示字符串的第 ii 个字符。

TnT_n 即为最终生成的咒语。

"晨曦之光"的咒语可以看作一个长度为 mm 的字符串 PP,每当 TnT_n 中存在一个子序列与 PP 相同,就会触发一次魔法。

小蒙新想知道一共会触发多少次魔法,由于答案可能很大,你只需要输出答案对 998244353998244353 取模后的结果。

输入格式

incantation.in 文件读入数据。

输入共三行,第一行包含两个正整数 n,mn,m​。

第二行包含两个字符串 S,PS,P,均由小写字母构成。

输出格式

输出到 incantation.out 文件。

输出一行,包含一个整数,表示答案,答案对 998244353998244353 取模后的结果。

样例

3 2
aba ba
5
7 8
ababbab aaaaabbb
540874965
10 5
abcdefghij ababc
355397358
10 10
aaaaabaaaa aaaaaaaaaa
929739779

说明/提示

样例 1 解释

T1=a,T2=aba,T3=abaaabaT_1=a,T_2=aba,T_3=abaaaba,其中 baba 作为子序列出现了 55 次。

数据范围

对于 30%30\% 的数据,1n,m101 \leq n,m \leq 10​。

对于另外 30%30\% 的数据,PP 中所有字符相同。

对于所有测评数据,1n,m1001 \leq n,m \leq 100