注意:本题的内存限制为 512MB,是默认限制的两倍。
Farmer John 创作了 $N$ ($1\le N\le 10^5$) 道题目。他招募了 $M$ ($1\le M\le 20$) 名测试者,每名测试者都将每道题目评定为“简单”(easy)或“困难”(hard)。
他的目标是创建一个按难度递增顺序排列的题集,该题集由这 $N$ 道题目中的某个子集按某种顺序排列而成。要求不存在任何一对题目,使得某位测试者认为排在后面的题目是“简单”,而排在前面的题目是“困难”。
请计算他可以组成的非空题集的不同数量,结果对 $10^9+7$ 取模。
输入格式
第一行包含 $N$ 和 $M$。
接下来的 $M$ 行,每行包含一个长度为 $N$ 的字符串。字符串的第 $i$ 个字符如果是 E,表示该测试者认为第 $i$ 道题是“简单”,否则为 H。
输出格式
FJ 可以组成的非空题集的不同数量,对 $10^9+7$ 取模。
样例
输入格式 1
3 1 EHE
输出格式 1
9
说明
九种可能的题集如下:
[1] [1,2] [1,3] [1,3,2] [2] [3] [3,1] [3,2] [3,1,2]
注意,题集中题目的顺序很重要。
输入格式 2
10 6 EHEEEHHEEH EHHHEEHHHE EHEHEHEEHH HEHEEEHEEE HHEEHEEEHE EHHEEEEEHE
输出格式 2
33
子任务
- 测试点 3-4:$M=1$
- 测试点 5-14:$M\le 16$
- 测试点 15-22:无额外限制。
题目来源:Benjamin Qi