代码如下:
#include <bits/stdc++.h>
using namespace std;
int dp[1001][1001];
string s1, s2;
int do_dp() {
for (int i=1; i<=s1.size(); i++) {
for (int j=1; j<=s2.size(); j++) {
if (s1[i-1] == s2[j-1]) {
dp[i][j] = dp[i-1][j-1] + 1;
} else {
dp[i][j] = max(dp[i-1][j], dp[j-1][i]);
}
}
}
return s1.size() - (dp[s1.size()][s2.size()]);
}
int main() {
cin >> s1;
s2 = s1;
reverse(s2.begin(), s2.end());
cout << do_dp() << endl;
return 0;
}