eolymp
bolt
Try our new interface for solving problems
Problems

Palindrome Partitioning

Palindrome Partitioning

The partitioning of the string is called a palindrome partitioning if every substring of the partition is a palindrome. For example, “aba|b|bbabb|a|b|aba” is a palindrome partitioning of “ababbbabbababa”.

Determine the fewest cuts needed for a palindrome partitioning of a given string. For example, minimum of 3 cuts are needed for “ababbbabbababa”. The three cuts are “a|babbbab|b|ababa”. If a string is a palindrome, then minimum 0 cuts are needed. If a string of length n containing all different characters, then minimum n - 1 cuts are needed.

Input

One string s of length no more than 1000.

Output

Print the minimum number of cuts needed for a palindrome partitioning of the string s.

Time limit 2 seconds
Memory limit 128 MiB
Input example #1
abbaazxzazbxbz
Output example #1
2
Input example #2
abccba
Output example #2
0
Input example #3
qwerty
Output example #3
5
Author Michael Medvediev