9341: 碱基

内存限制:128 MB 时间限制:1 S
题面:传统 评测方式:文本比较 上传者:
提交:4 通过:2

题目描述

生物学家正在对 n 个物种进行研究。

其中第 i 个物种的 DNA 序列为 �[�]s[i],其中的第 j 个碱基为 �[�][�],s[i][j], 碱基一定是 A,G,C,T 之一。

生物学家想找到这些生物中一部分生物的一些共性,他们现在关注那些至少在 m 个生物中出现的长度为 k 的连续碱基序列。准确的说,科学家关心的序列用 2�2m 元组 (�1,�1,�2,�2⋯,��,��)(i1,p1,i2,p2,im,pm) 表示,

满足:

    1i1<i2<<imn

且对于所有 �(0≤�<�)q(0q<k)

    s[i1][p1+q]=s[i2][p2+q]==s[im][pm+q]

现在给定所有生物的 DNA 序列,请告诉科学家有多少的 2�2m 元组是需要关注的。如果两个 2�2m 元组有任何一个位置不同,则认为是不同的元组。

原题地址:https://www.luogu.com.cn/problem/P8643

输入格式

输入的第一行包含三个整数 nmk,两个整数之间用一个空格分隔,意义如题目所述。

接下来 n 行,每行一个字符串表示一种生物的 DNA 序列。

DNA 序列从 11 至 n 编号,每个序列中的碱基从 11 开始依次编号,不同的生物的 DNA 序列长度可能不同。

输出格式

输出一个整数,表示关注的元组个数。

答案可能很大,你需要输出答案除以 1000000007(109+7)1000000007(109+7) 的余数。

输入样例 复制

3 2 2
ATC
TCG
ACG

输出样例 复制

2

数据范围与提示

对于 20%20% 的数据,�≤5,k5, 所有字符串总长 L 满足 �≤100L100

对于 30%30% 的数据,�≤10000L10000

对于 60%60% 的数据,�≤30000L30000

对于 100%100% 的数据,�≤5,�≤5,1≤�≤�≤105n5,m5,1kL105

保证所有 DNA 序列不为空且只会包含A,G,C,T 四种字母。