在小Z还在调整逻辑回归的参数时,团队中的其他成员发现了重要的东西。他们发现,病毒RNA序列上有部分内容和某种病毒是相似的。他们想要找到这些相似的片段。
具体地讲,我们现在有k份片段,每份片段均由A,G,C,U这四种字母组成。如果一段信息与这k份片段相似,那么我们一定能找到某些位置,使这k份片段与这些位置一一匹配,且顺序一样,没有重叠的部分。
比如说,k=2,片段分别为AG,CU,那么它和[AG][CU]是匹配的,和[AG]AG[CU]是匹配的(即使中间的AG没有被匹配到),和GG[AG]UU[CU]也是匹配的。同样,它和CUAG不匹配(因为AG在CU后面),和ACUG不匹配(A和G分开了),和AGC不匹配(最后少了一个U)。
现在,小组成员得到了一份长度为n的RNA序列,他们会将其中所有子串(下面的样例能帮助你理解)拿出来对k份片段进行匹配。他们想知道,有多少个不同的子串(起始位置不同就算不同)能够被匹配。
第一行连个整数n,k,表示序列的长度,片段的个数。
接下来一行,一个长度为n的字符串表示RNA序列。
接下来k行,每行先输入一个整数x,表示这份片段的长度,再输入一个字符串表示这份片段。
【样例1输入】
4 2
AGCU
2 AG
2 CU
【样例2输入】
5 2
AAAAA
2 AA
2 AA
【样例3输入】
10 1
AAAAACCCCC
1 A
【样例1输出】
1
【样例2输出】
3
【样例3输出】
40
【样例1解释】
AGCU有如下子串:A、G、C、U、AG、GC、CU、AGC、GCU、AGCU,可知只有AGCU是匹配的。
【样例2解释】
可能的子串为AAAA(1~4)、AAAA(2~5)、AAAAA(1~5)。
【数据范围】
对于30%的数据,k=1。
对于另外20%的数据,k=2,片段只由单个字符构成。
对于另外20%的数据,k=2。
对于100%的数据,n<=300,k<=4,片段长度<=3。