atcoder#ARC131F. [ARC131F] ARC Stamp

[ARC131F] ARC Stamp

配点 : 10001000

問題文

A, R, C からなる文字列 SS から始めて、「連続する三文字を選んで ARC に上書きする」操作を KK 回以下行ったところ、文字列 TT が得られました。

さて、最初の文字列 SS として何通りがあり得るでしょうか?これを 998244353998244353 で割った余りを求めてください。

制約

  • 3T50003 \leq |T| \leq 5000
  • 0K100000 \leq K \leq 10000
  • TTA, R, C からなる文字列

入力

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

TT

KK

出力

答えを出力してください。

ARCCARC
1
53

例えば、最初の文字列 SS が次のようなとき、11 回以下の操作で文字列 TT = ARCCARC を得ることができます。

  • SS = ARCCARC のとき:操作を行わないでも文字列 ARCCARC が得られる.
  • SS = CRACARC のとき:SS1,2,31, 2, 3 文字目を選んで ARC に上書きすると、文字列 ARCCARC が得られる。
  • SS = ARCCCCC のとき:SS5,6,75, 6, 7 文字目を選んで ARC に上書きすると、文字列 ARCCARC が得られる。

上に挙げたもの以外にもたくさんあり、SS としてあり得るものは全部で 5353 通りです。

ARARCRCA
5
2187

最初の文字列 SSAAAAAAAA のとき、例えば次のような 55 回以下の操作で文字列 TT = ARARCRCA を得ることができます。

  • ステップ 11:まず、3,4,53, 4, 5 文字目を選んで ARC に上書きすると、文字列 AAARCAAA が得られる。
  • ステップ 22:次に、5,6,75, 6, 7 文字目を選んで ARC に上書きすると、文字列 AAARARCA が得られる。
  • ステップ 33:次に、1,2,31, 2, 3 文字目を選んで ARC に上書きすると、文字列 ARCRARCA が得られる。
  • ステップ 44:最後、3,4,53, 4, 5 文字目を選んで ARC に上書きすると、文字列 ARARCRCA が得られる。

それ以外にも SS としてあり得るものはたくさんあり、全部で 21872187 通りです。

AARCRRARCC
0
1

00 回の操作で文字列 TT = AARCRRARCC を得られるのは、最初の時点で S=TS = T のとき、すなわち SS = AARCRRARCC11 通りしかありません。

AAAAARRRRRCCCCC
131
1

この入力例では、SS としてあり得るものは AAAAARRRRRCCCCC11 通りだけです。

CAARCACRAAARARARCRCRARCARARCRRARC
9
797833187

最初の文字列 SS としてあり得るものは 320236026147320236026147 通りあるので、これを 998244353998244353 で割った余りである 797833187797833187 を出力してください。