#include <bits/stdc++.h>
using namespace std;
const int N = 1e3+10;
string a;
int f[N][N]; //从i到j从当初的状态至少脱落多少个种子
int dfs(int i, int j)
{
if (f[i][j]!=-1) return f[i][j];
if (a[i]==a[j] && (i==j || i+1==j)) return 0;
if (a[i]!=a[j]) return f[i][j] = min(dfs(i+1,j)+1,dfs(i,j-1)+1);
else return f[i][j] = dfs(i+1,j-1);
}
int main()
{
memset(f, -1, sizeof f);
cin >> a;
cout << dfs(0,a.length()-1);
return 0;
}