EduBrick

H. Дописать до палиндрома

2000 мс · 256 МБ · всё или ничего

Сколько символов нужно вставить в строку (в любые места), чтобы она стала палиндромом?

Ответ - nn минус длина наибольшей палиндромной подпоследовательности.

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

Обратное тоже верно: если вставили kk символов, то из полученного палиндрома длины n+kn + k можно выбросить вставленные и получить подпоследовательность исходной строки длины nn... но она может не быть палиндромом. Аккуратное доказательство идёт по индукции, и его стоит проделать - это ровно та задача, где «очевидно» подводит.

Считать заново ничего не надо: это классная задача плюс одно вычитание.

Формат ввода

Одна строка длины nn (1≤n≤20001 \le n \le 2000) из строчных латинских букв.

Формат вывода

Одно число - наименьшее количество вставок.

Примеры

ввод
abacaba
вывод
0
ввод
abcde
вывод
4
Войдите, чтобы отправлять решения.