#include <bits/stdc++.h>
using namespace std;
const int N = 1000 + 10, INF = 0x3f3f3f3f;
int f[N][N];
string s;
int dfs(int l, int r)
{
if (l > r) return 0;
if ((r - l == 1 || r - l == 2) && s[l] == s[r]) return 0;
if (f[l][r] != INF) return f[l][r];
int t = 0;
if (s[l] == s[r]) t = dfs(l+1, r-1);
else t = min(dfs(l+1, r-1) + 2, min(dfs(l+1, r) + 1, dfs(l, r-1) + 1));
f[l][r] = t;
return t;
}
int main()
{
memset(f, INF, sizeof(f));
cin >> s;
for (int i = 0; i < s.size(); i++) f[i][i] = 0;
cout << dfs(0, s.size()-1) << endl;
return 0;
}