30 lines
785 B
Python
30 lines
785 B
Python
s = input().rstrip()
|
|
l = len(s)
|
|
|
|
isPalindrom = [[False]*l for _ in range(l)]
|
|
for length in range(1,l+1) :
|
|
for start in range(l-length + 1) :
|
|
end = start + length - 1
|
|
|
|
if length == 1 :
|
|
isPalindrom[start][end] = True
|
|
|
|
elif length == 2 :
|
|
if s[start] == s[end] :
|
|
isPalindrom[start][end] = True
|
|
else :
|
|
if s[start] == s[end] and isPalindrom[start+1][end-1]:
|
|
isPalindrom[start][end] = True
|
|
|
|
dp = [2501]*l
|
|
|
|
for end in range(l) :
|
|
for start in range(end+1) :
|
|
if isPalindrom[start][end] :
|
|
if start == 0 :
|
|
dp[end] = 1
|
|
else :
|
|
dp[end] = min(dp[end], dp[start-1] + 1)
|
|
|
|
print(dp[l-1])
|
|
|