312006 - 子串

有两个仅包含小写英文字母的字符串A和B。现在要从字符串A中取出k个\textbf{\underline{互不重叠}}的非空子串,然后把这k个子串按照其在字符串A中出现的顺序依次连接起来得到一个新的字符串,请问有多少种方案可以使得这个新串与字符串B相等?注意:子串取出的位置不同也认为是不同的方案。

输入

第一行是三个正整数n,m,k,分别表示字符串A的长度,字符串B的长度,以及问题描述中所提到的k,每两个整数之间用一个空格隔开。

第二行包含一个长度为n的字符串,表示字符串A。

第三行包含一个长度为m的字符串,表示字符串B。

输出

输出共一行,包含一个整数,表示所求方案数。由于答案可能很大,所以这里要求输出答案对1 000 000 007取模的结果。

样例

输入

6 3 1
aabaab
aab

输出

2

输入

6 3 2
aabaab
aab

输出

7

提示

所有合法方案如下:(加下划线的部分表示取出的子串)

样例1:\underline{aab}aab / aab\underline{aab}

样例2:\underline{aab}aab /\underline{a}aba\underline{ab}/ a\underline{a}ba\underline{ab}/ aab\underline{aab}

\underline{aab}aab /\underline{aa}baa\underline{b}/ aab\underline{aab}

数据规模

对于第1组数据:1\le n\le500,1\le m\le50,k=1

对于第2组至第3组数据:1\le n\le500,1\le m\le50,k=2

对于第4组至第5组数据:1\le n\le500,1\le m\le50,k=m

对于第1组至第7组数据:1\le n\le500,1\le m\le50,1\le k\le m

对于第1组至第9组数据:1\le n\le1000,1\le m\le100,1\le k\le m

对于所有10组数据:1\le n\le1000,1\le m\le200,1\le k\le m

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题