Задача №114740. Двойной палиндром

Ваня работает на заводе по изготовлению палиндромов. На заводе есть заготовка — строка \(s\) длины \(n\), состоящая из строчных букв английского алфавита, из которой Ваня может вырезать любую подстроку на продажу. Напомним, что палиндром — строка, читающаяся одинаковым образом как слева направо, так и справа налево.

Обычные палиндромы всем надоели и их никто не покупает, поэтому он решил производить двойные палиндромы. Двойной палиндром — это строка, которая является конкатенацией двух палиндромов равной длины. Например, строки « aabb », « aaaa » являются двойными палиндромами, а строки « abba » и « aaaabb » нет.

Ваня задался вопросом, сколько существует способов вырезать из строки \(s\) двойной палиндром, а именно, сколько существует пар \((l, r)\), что подстрока \(s_l s_{l+1} \ldots s_r\) является двойным палиндромом. Помогите Ване найти ответ на этот важный вопрос!

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

В первой строке задано целое число \(n\) (\(1 \leq n \leq 500\,000\)) — длина строки \(s\). Во второй строке задана строка \(s\), состоящая из строчных букв английского алфавита.

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

Выведите единственное число — искомое число подстрок, которые являются двойными палиндромами.

Примечание

В первом примере двойными палиндромами являются 5 подстрок длины 2 (« ab », « ba », « ac », « ca » и « ac »), а так же вся строка (« abacac »).

Система оценки

Тесты к этой задаче состоят из трёх групп. Баллы за каждую группу ставятся только при прохождении всех тестов группы и всех тестов предыдущих групп.

Дополнительные ограничения
Группа Баллы \(n\) Комментарий
0 0 Тесты из условия.
1 19 \(n \leq 500\)
2 33 \(n \leq 5000\)
3 48
Примеры
Входные данные
6
abacac
Выходные данные
6
Входные данные
5
aaaaa
Выходные данные
6
Сдать: для сдачи задач необходимо войти в систему