Олимпиадный тренинг

Задача . E. Хаотичное слияние


Заданы две строки \(x\) и \(y\), обе состоят из строчных латинских букв. Пусть \(|s|\) будет длиной строки \(s\).

Назовем последовательность \(a\) последовательностью слияния, если она состоит из ровно \(|x|\) нулей и ровно \(|y|\) единиц в некотором порядке.

Слияние \(z\) получается из последовательности \(a\) по следующим правилам:

  • если \(a_i=0\), то удалить букву из начала \(x\) и приписать ее в конец \(z\);
  • если \(a_i=1\), то удалить букву из начала \(y\) и приписать ее в конец \(z\).

Две последовательности слияния \(a\) и \(b\) считаются различными, если существует такая позиция \(i\), что \(a_i \neq b_i\).

Назовем строку \(z\) хаотичной, если для всех \(i\) от \(2\) до \(|z|\) \(z_{i-1} \neq z_i\).

Пусть \(s[l,r]\) для некоторых \(1 \le l \le r \le |s|\) будет подстрокой последовательных букв \(s\), начинающейся с позиции \(l\) и заканчивающейся в позиции \(r\) включительно.

Пусть \(f(l_1, r_1, l_2, r_2)\) будет количеством различных последовательностей слияния \(x[l_1,r_1]\) и \(y[l_2,r_2]\), которые производят хаотичные слияния. Обратите внимание, что рассматриваются только непустые подстроки \(x\) и \(y\).

Посчитайте \(\sum \limits_{1 \le l_1 \le r_1 \le |x| \\ 1 \le l_2 \le r_2 \le |y|} f(l_1, r_1, l_2, r_2)\). Выведите ответ по модулю \(998\,244\,353\).

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

В первой строке записана строка \(x\) (\(1 \le |x| \le 1000\)).

Во второй строке записана строка \(y\) (\(1 \le |y| \le 1000\)).

Обе строки состоят только из строчных латинских букв.

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

Выведите одно число — сумму \(f(l_1, r_1, l_2, r_2)\) по \(1 \le l_1 \le r_1 \le |x|\) и \(1 \le l_2 \le r_2 \le |y|\) по модулю \(998\,244\,353\).

Примечание

В первом примере:

  • \(6\) пар подстрок «a» and «b», каждая с корректными последовательностями слияния «01» and «10»;
  • \(3\) пары подстрок «a» and «bb», каждая с корректной последовательностью слияния «101»;
  • \(4\) пары подстрок «aa» and «b», каждая с корректной последовательностью слияния «010»;
  • \(2\) пары подстрок «aa» and «bb», каждая с корректными последовательностями слияния «0101» and «1010»;
  • \(2\) пары подстрок «aaa» and «b», каждая без корректных последовательностей слияния;
  • \(1\) пара подстрок «aaa» and «bb» с корректной последовательностью слияния «01010».

Поэтому ответ равен \(6 \cdot 2 + 3 \cdot 1 + 4 \cdot 1 + 2 \cdot 2 + 2 \cdot 0 + 1 \cdot 1 = 24\).


Примеры
Входные данныеВыходные данные
1 aaa
bb
24
2 code
forces
1574
3 aaaaa
aaa
0
4 justamassivetesttocheck
howwellyouhandlemodulooperations
667387032

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя