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

Задача . H. Палиндромная магия


После изучения всяких разных палиндромовых алгоритмов, Chouti решил, что палиндромы это очень интересно, и он решил дать вам следующую задачу.

У Chouti есть две строки \(A\) и \(B\). Так как он любит палиндромы, он хочет выбрать \(a\) как непустую палиндромную подстроку строки \(A\), а \(b\) как непустую палиндромную подстроку строки \(B\). Сконкатенировав их, он получит строку \(ab\).

Chouti считает, что строки, которые можно получить таким образом, очень интересные, поэтому он хочет знать, скоько различных строк он может так получить.

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

Первая строка содержит одну строка \(A\) (\(1 \le |A| \le 2 \cdot 10^5\)).

Вторая строка содержит одну строка \(B\) (\(1 \le |B| \le 2 \cdot 10^5\)).

Строки \(A\) и \(B\) состоят только из строчных английских букв.

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

В единственной строка выведите одно целое число — количество возможных строк.

Примечание

В первом примере можно получить строки

  • "a" + "a" = "aa",
  • "aa" + "a" = "aaa",
  • "aa" + "aba" = "aaaba",
  • "aa" + "b" = "aab",
  • "a" + "aba" = "aaba",
  • "a" + "b" = "ab".

Во втором примере можно получить строки "aa", "aaa", "aaaa", "aaaba", "aab", "aaba", "ab", "abaa", "abaaa", "abaaba", "abab", "ba", "baa", "baba", "bb".

Обратите внимание, что, не смотря на то, что "a"+"aa"="aa"+"a"="aaa", строка "aaa" учитывается только один раз.


Примеры
Входные данныеВыходные данные
1 aa
aba
6
2 aaba
abaa
15

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

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