//https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1?tpId=37&tqId=21255&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26pageSize%3D50%26search%3D%26tpId%3D37%26type%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int main() {
string s1;
while(cin >> s1){
int size = s1.size();
int maxn = 0;
int tem = 0;
int dp[size][size];
memset(dp, 0, sizeof(dp));
string s2 = s1;
reverse(s2.begin(), s2.end());
for(int i = 0;i<size;i++)
for(int j = 0;j<size;j++){
if(s2[i]==s1[j]){
if(i==0||j==0)
dp[i][j] = 1;
else dp[i][j] = dp[i-1][j-1]+1;
if((i+j+2==size)||(i+j+1==size)){
if(i+j+2==size) tem = dp[i][j]*2;
else tem = dp[i][j]*2-1;
maxn = max(maxn, tem);
}
}
}
cout << maxn;
}
}