Изменения рейтингов за последние раунды временно удалены. Скоро они будут возвращены. ×

F. Палиндромы и изменения
ограничение по времени на тест
5 секунд
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Вам дана строка $$$s$$$ длины $$$n$$$, состоящая из строчных латинских букв.

Вам разрешено заменить не более одного символа строки на произвольную строчную латинскую букву.

Выведите лексикографически минимальную строку, которая получается из исходной и содержит максимальное количество палиндромов в качестве подстрок. Если какой-то палиндром входит как подстрока несколько раз, он учитывается столько же раз, сколько встречается в строке.

Строка $$$a$$$ лексикографически меньше строки $$$b$$$, если и только если выполняется один из следующих пунктов:

  • $$$a$$$ — префикс $$$b$$$, но $$$a \ne b$$$;
  • в первой позиции, где $$$a$$$ и $$$b$$$ различаются, в строке $$$a$$$ находится буква, которая встречается в алфавите раньше, чем соответствующая буква в $$$b$$$.
Входные данные

В первой строке записано одно целое число $$$n$$$ ($$$1 \leq n \leq 3 \cdot 10^5$$$) — количество символов в строке.

Во второй строке задана сама строка $$$s$$$ из $$$n$$$ строчных латинских букв

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

В первой строке выведите одно целое число — максимальное количество подстрок-палиндромов, которое может быть у строки, которую можно получить, применив операцию не более одного раза.

Во второй строке выведите строку, которую можно получить из $$$s$$$ и которая содержит максимальное количество подстрок-палиндромов. Если таких строк несколько, выведите лексикографически минимальную.

Примеры
Входные данные
5
aabaa
Выходные данные
15
aaaaa
Входные данные
5
aaaaa
Выходные данные
15
aaaaa
Входные данные
4
awoo
Выходные данные
7
aooo