#include <bits/stdc++.h>
#define pb push_back
#define pf push_front
#define fi first
#define se second
#define maxn 3050

using namespace std;
typedef long long ll;

string s;
vector<vector<int>> p;
vector<vector<int>> v;
int m[30];
int resp[maxn];


int br(char c)
{
    return c-'a';
}

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> s;
	int n=s.size();
	for(int i=0; i<30; i++){
        v.pb({});
        m[i]=1;
	}
	for(int i=0; i<n; i++){
        p.pb({});
	}
	for(int i=0; i<n; i++){
        v[br(s[i])].pb(i);
	}
	for(int i=0; i<n; i++){
        int u=br(s[i]);
        for(int j=m[u]; j<v[u].size(); j++){
            if((v[u][j]-i)%2!=0){
                p[(v[u][j]+i+1)/2].pb({i});
            }
        }
        m[u]++;
	}
	for(int i=0; i<n; i++){
        reverse(p[i].begin(),p[i].end());
	}

	resp[0]=0;
	int res=0;
	for(int i=1; i<n; i++){
        int tr=0;
        for(auto u:p[i]){
            tr++;
            res=max(res,resp[u]+tr);
        }
        resp[i]=res;
	}
	cout << resp[n-1] << "\n";
}