时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
空。
有

个魔怔人在一个群里,每个魔怔人都可能会说

句魔怔话。
你现在知道他们每个人会说哪些魔怔的话,用一个字符串表示,若

为

,表示这个人会说第

句魔怔话,若

为

,则表示这个人不会说第

句魔怔话。
你想选出其中的若干个魔怔人,让他们站成一队,
队列不能为空,这个队列需要满足以下的特征:
- 按照原来的顺序,但是不必连续。比如可以是第
个人,也可以是第
个人,也可以是第
个人,但不可以是第
个人,因为不是按照原来的顺序。 - 相邻的两个人不能会说同样的魔怔话。比如前面的人会说第
句,后面的人会说第
句,那么可以站在一起,但是如果前面的人会说第
句,而后面的人会说第
句,那么不能站在一起,因为他们都会说第
句魔怔话,可能会魔怔对方。
请问,你有多少种站队的方法,对

取模。
输入描述:
第一行,两个正整数
)
。
接下来

行,每行一个长度为

的字符串

,保证任何字符串都由

构成。
输出描述:
一行一个正整数,表示站队的方法数对
取模后的结果。
示例2
输入
复制
3 7
hhhhhhh
oohhoho
ohhoohh