atcoder#ABC305G. [ABC305G] Banned Substrings

[ABC305G] Banned Substrings

题目描述

a, b からなる長さ 6 6 以下の空でない文字列の集合 S={ s  1,s  2,,s  M} S=\lbrace\ s\ _\ 1,s\ _\ 2,\ldots,s\ _\ M\rbrace が与えられます。 以下の条件を満たす a, b からなる長さ N N の文字列 T T はいくつあるか求めてください。

  • 任意の s  i S s\ _\ i\in\ S に対して、T T s  i s\ _\ i を連続する部分文字列として含まない

ただし、答えは非常に大きくなる可能性があるので、答えを 998244353 998244353 で割った余りを求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N M M s  1 s\ _\ 1 s  2 s\ _\ 2 \vdots s  M s\ _\ M

输出格式

答えを 998244353 998244353 で割ったあまりを 1 1 行で出力せよ。

题目大意

题目描述

给定一个由 MM 个长度不超过 66 的仅由字母 a\texttt ab\texttt b 组成的非空字符串集合 S={s1,s2,...,sM}S=\{s_1, s_2, ..., s_M\}

求有多少个字符串 TT 满足以下条件:

  • 长度为 NN 且仅由字母 a\texttt ab\texttt b 组成。
  • 对于任意 siSs_i\in STT 中不包含 sis_i 作为连续的子串。

由于答案可能很大,所以对 998244353998244353 取模。

数据范围

1N10181\leq N\leq 10^{18}

1M1261\leq M\leq 126

NNMM 是整数。

sis_i 是由字母 aabb 组成的长度不超过 66 的非空字符串。

sisjs_i \neq s_j1i<jM1\leq i<j\leq M)。

输入格式

输入共 M+1M+1 行,第一行包括两个整数 NNMM,表示字符串长度和非空字符串集合大小。接下来 MM 行,每行一个字符串 sis_i

输出格式

输出仅包含一个整数,表示满足条件的字符串 TT 的个数对 998244353998244353 取模后的结果。

4 3
aab
bbab
abab
10
20 1
aa
17711
1000000007 28
bbabba
bbbbaa
aabbab
bbbaba
baaabb
babaab
bbaaba
aabaaa
aaaaaa
aabbaa
bbaaaa
bbaabb
bbabab
aababa
baaaba
ababab
abbaba
aabaab
ababaa
abbbba
baabaa
aabbbb
abbbab
baaaab
baabbb
ababbb
baabba
abaaaa
566756841

提示

制約

  • 1 N1018 1\leq\ N\leq10^{18}
  • 1 M126 1\leq\ M\leq126
  • N,M N,M は整数
  • s  i s\ _\ i a, b からなる長さ 6 6 以下の空でない文字列
  • s  i s  j (1 i< j M) s\ _\ i\neq\ s\ _\ j\ (1\leq\ i\lt\ j\leq\ M)

Sample Explanation 1

a, b からなる長さ 4 4 の文字列で、連続する部分列として aab, bbab, abab をもたないようなものは aaaa, abaa, abba, abbb, baaa, baba, babb, bbaa, bbba, bbbb10 10 個なので、10 10 を出力してください。

Sample Explanation 3

998244353 998244353 で割ったあまりを出力してください。