[AGC046D] Secret Passage

题意翻译

给定 $01$ 串 $S$,每次操作位:选择首位两个字符,删除其中一个字符,把另一个字符插到任意位置。求最后能得到多少种不同的 $01$ 串。 其中 $1\le |S|\le 300$。

题目描述

[problemUrl]: https://atcoder.jp/contests/agc046/tasks/agc046_d `0` と `1` のみからなる文字列 $ S $ が与えられます。以下の操作を $ 0 $ 回以上任意の回数繰り返してできる可能性のある文字列の個数を $ 998244353 $ で割った余りを求めてください。 - $ S $ の先頭 $ 2 $ 文字を取り除き、そのうち片方を捨て、もう片方を $ S $ の任意の位置に挿入する。この操作は、$ S $ が $ 2 $ 文字以上からなるときのみ実行できる。

输入输出格式

输入格式


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

输出格式


操作を $ 0 $ 回以上任意の回数繰り返してできる可能性のある文字列の個数を $ 998244353 $ で割った余りを出力せよ。

输入输出样例

输入样例 #1

0001

输出样例 #1

8

输入样例 #2

110001

输出样例 #2

24

输入样例 #3

11101111011111000000000110000001111100011111000000001111111110000000111111111

输出样例 #3

697354558

说明

### 制約 - $ 1\ \leq\ |S|\ \leq\ 300 $ - $ S $ は `0` と `1` のみからなる ### Sample Explanation 1 `0001`, `001`, `010`, `00`, `01`, `10`, `0`, `1` の $ 8 $ つが条件を満たします。