D. Палиндромный XOR
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Вам дана строка $$$s$$$, состоящая из символов «1», «0» и «?». Гарантируется, что первый символ в $$$s$$$ будет «1». Пусть $$$m$$$ будет количеством символов в $$$s$$$.

Подсчитайте количество способов выбрать пару целых чисел $$$a, b$$$, которые удовлетворяют следующему:

  • $$$1 \leq a < b < 2^m$$$
  • При записи без начальных нулей двоичные представления $$$a$$$ и $$$b$$$ являются палиндромами.
  • Двоичное представление побитового XOR $$$a$$$ и $$$b$$$ подходит под шаблон $$$s$$$. Строка $$$t$$$ подходит под шаблон $$$s$$$, если длины $$$t$$$ и $$$s$$$ одинаковы и для каждого $$$i$$$, $$$i$$$-й символ $$$t$$$ равен $$$i$$$-му символу в $$$s$$$, или же $$$i$$$-й символ в $$$s$$$ равен «?».

Посчитайте это по модулю $$$998244353$$$.

Входные данные

Первая строка содержит строку $$$s$$$ ($$$1 \leq |s| \leq 1\,000$$$). $$$s$$$ состоит только из «1», «0» and «?». Гарантируется, что первый символ в $$$s$$$ — это «1».

Выходные данные

Выведите одно целое число — количество пар, удовлетворяющих условиям, по модулю $$$998244353$$$.

Примеры
Входные данные
10110
Выходные данные
3
Входные данные
1?0???10
Выходные данные
44
Входные данные
1?????????????????????????????????????
Выходные данные
519569202
Входные данные
1
Выходные данные
0
Примечание

В первом примере, нам подходят $$$(111, 10001), (11, 10101), (1001, 11111)$$$.