#include<bits/stdc++.h>
using namespace std;
string S;
int N,dp[3005][3005],sol,preklop[3005][3005];
int main(){
  cin>>S;
  S.clear();
  for(int i=1; i<=3000; i++)S.push_back('a');
  N=S.size();
  S="."+S+"....";
  for(int i=1; i<=N; i++){
    for(int j=1; j+i-1<=N; j++){
      preklop[i][j]=preklop[i][j-1];
      if(i-j<1 or i+j-1>N)continue;
      if(S[i+j-1]==S[i-j])preklop[i][j]++;
    }
    preklop[i][1]=0;
  }
  for(int i=1; i<=N; i++){
    for(int i2=1; i2+2<=i; i2++)
      dp[i][2]=max(dp[i][2],dp[i2][i-i2]+preklop[i][min(2,i-i2)]);
    for(int j=3; i+j-1<=N; j++){
      dp[i][j]=max(dp[i][j],dp[i][j-1]);
      if(i-j>0)dp[i][j]=max(dp[i][j],dp[i-j][j]+preklop[i][j]);
    }
  }
  for(int i=1; i<=N; i++)
    sol=max(sol,dp[i][N-i+1]);
  cout<<sol<<endl;
  return 0;
}