3021: 三组基因

内存限制:256 MB 时间限制:2.000 S
评测方式:文本比较 命题人:
提交:0 解决:

题目描述

小Y是个灵魂重组师,他每天要和各种各样的基因玩耍。

这天他正在重组三组基因,三组基因用由小写英文字母组成的字符串 S1,S2,S3 表示。他重组的方式为提取出三个基因中相同的部分,并加以改 造。显然他有非常多种选择方式进行提取,现在他想知道,对于特定的提取 长度 l,他有多少种方式进行提取,提取方式不同当且仅当存在某个基因提 取的位置不同。(可以通过样例数据来加深理解。)

输入

共三行,每行一个由小写英文字母组成的字符串。

输出

共 min(|S1|,|S2|,|S3|) 行,每行输出一个整数,第 i 行表示提取长度为 i 的提取方法数。答案模 1000000007(109 + 7)。

样例输入 复制

aacbc
baac
aacaa

样例输出 复制

18
3
1
0

提示

【样例解释】

长度为 2 时三种提取方法:

1 aacbc, baac, aacaa

2 aacbc, baac, aacaa

3 aacbc, baac, aacaa

【数据范围】

20% 的数据:1 ≤|S1|,|S2|,|S3|≤ 10

60% 的数据:1 ≤|S1|,|S2|,|S3|≤ 1000

100% 的数据:1 ≤|S1|,|S2|,|S3|≤ 105