#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll p1=31,p2=1e9+7;
ll powr(ll a,ll b){
if(b==0) return 1;
ll v=powr(a,b/2);
v=(v*v)%p2;
if(b%2) v=(v*a)%p2;
return v;
}
int main(){
ll n,i,j,k,q;
string s1,s2;
cin>>s1;
n=s1.size();
s2=s1;
reverse(s2.begin(),s2.end());
vector<ll> h1(n),h2(n);
h1[n-1]=s1[n-1]-'a';
h2[n-1]=s2[n-1]-'a';
for(i=n-2 ; i>=0 ; i--){
h1[i]=(((s1[i]-'a')*powr(p1,n-1-i))%p2+h1[i+1])%p2;
h2[i]=(((s2[i]-'a')*powr(p1,n-1-i))%p2+h2[i+1])%p2;
}
map<pair<ll,ll>,ll> mp;
ll inv=powr(p1,p2-2);
for(i=0 ; i<n ; i++){
for(j=1 ; j<=n-i ; j++){
ll hash1=h1[i];
ll hash2=h2[n-i-j];
if(i+j<n){
hash1=(hash1-h1[i+j]+p2)%p2;
hash1=(hash1*powr(inv,n-i-j))%p2;
}
if(n-i<n){
hash2=(hash2-h2[n-i]+p2)%p2;
hash2=(hash2*powr(inv,i))%p2;
}
if(hash1==hash2) mp[{j,hash1}]++;
}
}
ll ans=0;
for(auto v:mp) ans=max(ans,v.first.first*v.second);
cout<<ans<<"\n";
return 0;
}