#agc020e. [agc020_e]Encoding Subsets

[agc020_e]Encoding Subsets

問題文

次のような、01 からなる文字列をエンコードする規則を考えます。

  • 文字列 01 はそれぞれ 01 とエンコードできる。
  • 文字列 AABB をそれぞれ PPQQ とエンコードできる場合、文字列 ABABPQPQ とエンコードできる。
  • 文字列 AAPP とエンコードできる場合、Kgeq2K \\geq 2 を正の整数として、文字列 AA...AAA...AAAKK 個連結したもの)を (PPxKK) とエンコードできる。

例えば、文字列 00100100100100100100(1(0x2)x2)1(001x3) などとエンコードすることができ、この他のエンコード方法も存在します。

また、次の条件が満たされるとき、文字列 AA は文字列 BBサブセット であると呼びます。

  • AABB は長さが等しく、どちらも 01 からなる。
  • AiA_i = 1 であるようなすべての添字 ii に対して、BiB_i = 1 でもある。

01 からなる文字列 SS が与えられます。SS のすべてのサブセットについて、それぞれをエンコードする方法が何通り存在するか求め、それらの個数の総和を 998244353998244353 で割ったあまりを求めてください。

制約

  • 1leqSleq1001 \\leq |S| \\leq 100
  • SS01 からなる。

入力

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

SS

出力

SS のすべてのサブセットについてのエンコード方法の個数の総和を 998244353998244353 で割ったあまりを出力せよ。


入力例 1

011

出力例 1

9

SS のサブセットは 44 個存在し、

  • 0110110(1x2) とエンコードできます。
  • 010010 とエンコードできます。
  • 001001(0x2)1 とエンコードできます。
  • 0000000(0x2)(0x2)0(0x3) とエンコードできます。

したがって、SS のすべてのサブセットについてのエンコード方法の個数の総和は 2+1+2+4=92 + 1 + 2 + 4 = 9 通りです。


入力例 2

0000

出力例 2

10

今回は SS のサブセットは 11 個しか存在しませんが、1010 通りの方法でエンコードできます。


入力例 3

101110

出力例 3

156

入力例 4

001110111010110001100000100111

出力例 4

363383189

結果を 998244353998244353 で割ったあまりを出力することを忘れずに。