#include <stdio.h>
#define MAXN 500
#define INF 2000000000
#define CHARS 26
char s[MAXN + 2];
int d[MAXN][MAXN][CHARS];
int main(){
FILE *in = fopen("palm.in", "r");
int n = 0;
fgets(s, MAXN + 2, in);
while(s[n] >= 'a' && s[n] <= 'z'){
s[n] -= 'a';
n++;
}
fclose(in);
int i, j, k, l;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
for(k = 0; k < CHARS; k++)
d[i][j][k] = -INF;
for(i = 0; i < n; i++)
d[i][i][s[i]] = 1;
for(i = 1; i < n; i++)
d[i][i - 1][CHARS - 1] = 0;
for(i = 2; i <= n; i++){
for(j = 0; j + i <= n; j++){
k = j + i - 1;
if(s[j] == s[k]){
for(l = s[j]; l < CHARS; l++){
if(d[j][k][s[j]] < 2 + d[j + 1][k - 1][l])
d[j][k][s[j]] = 2 + d[j + 1][k - 1][l];
}
}
for(l = 0; l < CHARS; l++){
if(d[j][k][l] < d[j + 1][k][l])
d[j][k][l] = d[j + 1][k][l];
if(d[j][k][l] < d[j][k - 1][l])
d[j][k][l] = d[j][k - 1][l];
}
}
}
FILE *out = fopen("palm.out", "w");
int max = 0;
for(i = 0; i < CHARS; i++)
if(max < d[0][n - 1][i])
max = d[0][n - 1][i];
fprintf(out, "%d", max);
fclose(out);
return 0;
}