Минимум разрезов на палиндромы

Просмотр в формате PDF

Submit solution


Очки: 180
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Автор:
Problem types
Allowed languages
C++, Python

Наборщик работает с полосой текста, представленной строкой s. Ему нужно разрезать эту строку на несколько подряд идущих кусков так, чтобы каждый получившийся кусок читался одинаково слева направо и справа налево, то есть был палиндромом.

Требуется определить минимальное число разрезов, которое необходимо сделать. Разрез можно выполнять только между соседними символами строки. Если вся строка уже является палиндромом, ответ равен 0.

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

В единственной строке задана непустая строка s, состоящая из строчных латинских букв.

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

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

Ограничения

1 <= |s| <= 2000

Примеры

Пример 1

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

a

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

0
Пример 2

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

ab

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

1

Комментарии

Еще нет ни одного комментария.