/*
1000完全能够负担得起二维数组
将输入字符串逆序,例如将Ab3bd倒过来,为db3bA
公共的子序列就不用在给他插入字符串,就相当于看没有匹配的字符的字数就是解,
那么,算出来最长公共子序列就能知道答案了
举一个例子:abcb 反过来为bcba 最长公共子序列为bcb :3 那么 插入一个a 就好了
变成 abcba
*/
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
int arr[1005][1005];
signed main(){
string s;
cin >> s;
int n = s.size();
s = " " + s;
string rs;
rs = " ";
for(int i=n;i>=1;i--){
rs+=s[i];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(s[i]==rs[j]){
arr[i][j] = arr[i-1][j-1] + 1;
}
else{
arr[i][j] = max(arr[i-1][j],arr[i][j-1]);
}
}
}
cout << n - arr[n][n] <<endl;
return 0;
}