思路:最长回文子序列。
#include <iostream>
#include <vector>
#include <string.h>
using namespace std;
int dp[1234][1234];
int ll(string str){
int n=str.length();
for(int i=n-1;i>=0;i--){
dp[i][i]=1;
for(int j=i+1;j<n;j++){
if(str[i]==str[j])
dp[i][j]=dp[i+1][j-1]+2;
else
dp[i][j]=max(dp[i+1][j],dp[i][j-1]);
}
}
return dp[0][n-1];
}
int main()
{
string s;
int length;
while(cin>>s){
for(int i=0;i<s.length();i++)
{
if(s[i]>='a'&&s[i]<='z')
{
s[i]=s[i]-32;
}
}
length=ll(s);
cout<<s.length()-length<<endl;
}
return 0;
}