AT_arc131_f [ARC131F] ARC Stamp
Description
[problemUrl]: https://atcoder.jp/contests/arc131/tasks/arc131_f
`A`, `R`, `C` からなる文字列 $ S $ から始めて、「連続する三文字を選んで `ARC` に上書きする」操作を $ K $ 回以下行ったところ、文字列 $ T $ が得られました。
さて、最初の文字列 $ S $ として何通りがあり得るでしょうか?これを $ 998244353 $ で割った余りを求めてください。
Input Format
入力は以下の形式で標準入力から与えられます。
> $ T $ $ K $
Output Format
答えを出力してください。
Explanation/Hint
### 制約
- $ 3\ \leq\ |T|\ \leq\ 5000 $
- $ 0\ \leq\ K\ \leq\ 10000 $
- $ T $ は `A`, `R`, `C` からなる文字列
### Sample Explanation 1
例えば、最初の文字列 $ S $ が次のようなとき、$ 1 $ 回以下の操作で文字列 $ T $ = `ARCCARC` を得ることができます。 - $ S $ = `ARCCARC` のとき:操作を行わないでも文字列 `ARCCARC` が得られる. - $ S $ = `CRACARC` のとき:$ S $ の $ 1,\ 2,\ 3 $ 文字目を選んで `ARC` に上書きすると、文字列 `ARCCARC` が得られる。 - $ S $ = `ARCCCCC` のとき:$ S $ の $ 5,\ 6,\ 7 $ 文字目を選んで `ARC` に上書きすると、文字列 `ARCCARC` が得られる。 上に挙げたもの以外にもたくさんあり、$ S $ としてあり得るものは全部で $ 53 $ 通りです。
### Sample Explanation 2
最初の文字列 $ S $ が `AAAAAAAA` のとき、例えば次のような $ 5 $ 回以下の操作で文字列 $ T $ = `ARARCRCA` を得ることができます。 - ステップ $ 1 $:まず、$ 3,\ 4,\ 5 $ 文字目を選んで `ARC` に上書きすると、文字列 `AAARCAAA` が得られる。 - ステップ $ 2 $:次に、$ 5,\ 6,\ 7 $ 文字目を選んで `ARC` に上書きすると、文字列 `AAARARCA` が得られる。 - ステップ $ 3 $:次に、$ 1,\ 2,\ 3 $ 文字目を選んで `ARC` に上書きすると、文字列 `ARCRARCA` が得られる。 - ステップ $ 4 $:最後、$ 3,\ 4,\ 5 $ 文字目を選んで `ARC` に上書きすると、文字列 `ARARCRCA` が得られる。 それ以外にも $ S $ としてあり得るものはたくさんあり、全部で $ 2187 $ 通りです。
### Sample Explanation 3
$ 0 $ 回の操作で文字列 $ T $ = `AARCRRARCC` を得られるのは、最初の時点で $ S\ =\ T $ のとき、すなわち $ S $ = `AARCRRARCC` の $ 1 $ 通りしかありません。
### Sample Explanation 4
この入力例では、$ S $ としてあり得るものは `AAAAARRRRRCCCCC` の $ 1 $ 通りだけです。
### Sample Explanation 5
最初の文字列 $ S $ としてあり得るものは $ 320236026147 $ 通りあるので、これを $ 998244353 $ で割った余りである $ 797833187 $ を出力してください。