参考
https://blog.csdn.net/qq_39588027/article/details/79618015
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
int dp[N][N];
int getMaxCommon(string s1, string s2){
int n = s1.size();
int m = s2.size();
dp[0][0] = 0;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
if(s1[i] == s2[j]){
dp[i][j] = dp[i-1][j-1] + 1;
}else{
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
}
}
return dp[n][m];
}
int main(){
string s;
cin >> s;
int n = s.size();
string text = "";
for(int i = n-1; i >= 0; i--){
text += s[i];
}
int len = getMaxCommon(s, text);
printf("%d\n", n - len);
return 0;
}