#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char s[1100];
int dp[1010][1010];
int main(){
scanf("%s",s+1);
int n=strlen(s+1);
//cout<<n<<endl;
memset(dp,0x7f,sizeof(dp));
/*for(int i=1;i<n;i++){
if(s[i]==s[i+1]) dp[i][i+1]=0;
else dp[i][i+1]=1;
}*/
for(int i=1;i<=n;i++) dp[i][i]=0;
for(int i=1;i<n;i++) if(s[i]==s[i+1]) dp[i][i+1]=0;
else dp[i][i+1]=1;
for(int k=2;k<=n;k++){
for(int i=1;i<=n;i++){
int j=i+k;
if(j>n) continue;
if(s[i]==s[j]) dp[i][j]=min(dp[i][j],dp[i+1][j-1]);
else dp[i][j]=min(dp[i+1][j],dp[i][j-1])+1;
}
}
cout<<dp[1][n]<<endl;
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char s[1100];
int dp[1010][1010];
int main(){
scanf("%s",s+1);
int n=strlen(s+1);
//cout<<n<<endl;
memset(dp,0x7f,sizeof(dp));
/*for(int i=1;i<n;i++){
if(s[i]==s[i+1]) dp[i][i+1]=0;
else dp[i][i+1]=1;
}*/
for(int i=1;i<=n;i++) dp[i][i]=0;
for(int i=1;i<n;i++) if(s[i]==s[i+1]) dp[i][i+1]=0;
else dp[i][i+1]=1;
for(int k=2;k<=n;k++){
for(int i=1;i<=n;i++){
int j=i+k;
if(j>n) continue;
if(s[i]==s[j]) dp[i][j]=min(dp[i][j],dp[i+1][j-1]);
else dp[i][j]=min(dp[i+1][j],dp[i][j-1])+1;
}
}
cout<<dp[1][n]<<endl;
return 0;
}