实际是求最长公共子串
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
string maxSubString(string s1, string s2){
int xlen = (int)s1.size(), ylen = (int)s2.size();
vector<vector<int>> m(xlen, vector<int>(ylen, 0));
int maxlen = -1, index = -1;
for(int i = 0; i < xlen; ++i){
for(int j = 0; j < ylen; ++j){
if(s1[i] == s2[j]){
if(i == 0 || j == 0) m[i][j] = 1;
else m[i][j] = m[i-1][j-1] + 1;
if(maxlen < m[i][j]){
maxlen = m[i][j];
index = i - maxlen + 1;
}
}
}
}
return s1.substr(index, maxlen);
}
int main(){
string s;
getline(cin, s);
string rs(s);
reverse(begin(rs), end(rs));
cout << maxSubString(s, rs).size();
return 0;
}