//拼接的等于删除的等于最大回文子串
//数据范围1000,DP
#include <iostream>
#include <cstring>
using namespace std;
const int N = 1010;
int f[N][N];
char s[N];
int main()
{
cin>>s+1;
int n=strlen(s+1);
for(int i=1;i<=n;i++) f[i][i]=1;
for(int len=2;len<=n;len++)
for(int i=1;i+len-1<=n;i++)
{
int j=i+len-1;
f[i][j]=max(f[i+1][j],f[i][j-1]);
if(s[i]==s[j])f[i][j]=max(f[i][j],f[i+1][j-1]+2);
}
cout<<n-f[1][n];
return 0;
}