至少脱落多少个种子等价于总数量 - 最大回文子序列的长度
dp[i][j]表示从i到j最长回文子序列的长度(子序列是不连续的)
'''
相当于去寻找最长回文子序列
'''
s = input()
n = len(s)
dp = [[0] * n for i in range(n)]
for len_ in range(1, n + 1):
for i in range(n):
j = i + len_ - 1
if j >= n: break
if len_ == 1: dp[i][j] = 1
else:
dp[i][j] = max(dp[i][j - 1], dp[i][j])
dp[i][j] = max(dp[i + 1][j], dp[i][j])
if s[i] == s[j]:
dp[i][j] = max(dp[i + 1][j - 1] + 2, dp[i][j])
print(n - dp[0][n - 1])