#include <bits/stdc++.h>
#define MAXN 3010

using namespace std;

string s;

int dp[MAXN][MAXN];

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	
	cin >> s;
	
	int n = s.size();

	if(n == 2)
	{
		cout << "0";
		return 0;
	}
	
	for(int i = 2; i < n - 1; i++)
	{
		int l = i - 1, r = i, t = 0;
		
		while(l >= 0)
		{	
			if(r < n)
			{
				if(s[l] == s[r]) 
					t++;
			
				if(i - l >= 2) 
				{
					dp[i][r] = max(dp[i][r - 1], dp[l][i] + t);
						
				}
				else dp[i][r] = t;
			}
			else
			{
				if(i - l >= 2) 
           		{
                	dp[i][n - 1] = max(dp[i][n - 1], dp[l][i] + t);
            	}
            	else dp[i][r] = t;
			}
			
			l--;
			r++;
		}
		
		while(r < n)
		{
			dp[i][r] = dp[i][r - 1];
			r++;
		}
	}
		
	cout << max(dp[n - 3][n - 1], dp[n - 2][n - 1]);	
	
	return 0;
}