atcoder#ABC305G. [ABC305G] Banned Substrings

[ABC305G] Banned Substrings

配点 : 550550

問題文

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

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

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

制約

  • 1N10181\leq N\leq10^{18}
  • 1M1261\leq M\leq126
  • N,MN,M は整数
  • sis _ ia, b からなる長さ 66 以下の空でない文字列
  • sisj (1i<jM)s _ i\neq s _ j\ (1\leq i\lt j\leq M)

入力

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

NN MM

s1s _ 1

s2s _ 2

\vdots

sMs _ M

出力

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

4 3
aab
bbab
abab
10

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

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

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