AT_abc305_g [ABC305G] Banned Substrings
Description
[problemUrl]: https://atcoder.jp/contests/abc305/tasks/abc305_g
`a`, `b` からなる長さ $ 6 $ 以下の空でない文字列の集合 $ S=\lbrace\ s\ _\ 1,s\ _\ 2,\ldots,s\ _\ M\rbrace $ が与えられます。 以下の条件を満たす `a`, `b` からなる長さ $ N $ の文字列 $ T $ はいくつあるか求めてください。
- 任意の $ s\ _\ i\in\ S $ に対して、$ T $ は $ s\ _\ i $ を連続する部分文字列として含まない
ただし、答えは非常に大きくなる可能性があるので、答えを $ 998244353 $ で割った余りを求めてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ M $ $ s\ _\ 1 $ $ s\ _\ 2 $ $ \vdots $ $ s\ _\ M $
Output Format
答えを $ 998244353 $ で割ったあまりを $ 1 $ 行で出力せよ。
Explanation/Hint
### 制約
- $ 1\leq\ N\leq10^{18} $
- $ 1\leq\ M\leq126 $
- $ N,M $ は整数
- $ s\ _\ i $ は `a`, `b` からなる長さ $ 6 $ 以下の空でない文字列
- $ s\ _\ i\neq\ s\ _\ j\ (1\leq\ i\lt\ j\leq\ M) $
### Sample Explanation 1
`a`, `b` からなる長さ $ 4 $ の文字列で、連続する部分列として `aab`, `bbab`, `abab` をもたないようなものは `aaaa`, `abaa`, `abba`, `abbb`, `baaa`, `baba`, `babb`, `bbaa`, `bbba`, `bbbb` の $ 10 $ 個なので、$ 10 $ を出力してください。
### Sample Explanation 3
$ 998244353 $ で割ったあまりを出力してください。