#include <bits/stdc++.h>
using namespace std;
string s;
void nhap(){
cin >> s;
s = '0' + s;
}
int last[30], dp[100005], f[100005][30], prv[100005][30];
void solve(){
for(int i = 1; i < s.size(); i++){
for(int j = 1; j <= 26; j++)prv[i][j] = last[j];
last[s[i] - 'a' + 1] = i;
}
for(int i = 1; i < s.size(); i++){
int num = 0, d = s[i] - 'a';
int pos = i;
while(pos && num < d){
num++;
pos = prv[pos][d + 1];
}
if(num == d && pos){
dp[i] = d + 1;
for(int j = 1; j <= d; j++){
dp[i] = max(dp[i], f[pos - 1][j] + d + 1);
}
}
for(int j = 1; j <= 26; j++){
if(i != 0)f[i][j] = f[i-1][j];
}
f[i][d + 1] = max(f[i][d + 1], dp[i]);
}
int kq = 0;
for(int c = 1; c <= 26; c++){
kq = max(kq, f[s.size() - 1][c]);
}
cout << kq;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
nhap();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RyaW5nIHM7CnZvaWQgbmhhcCgpewogICAgY2luID4+IHM7CiAgICBzID0gJzAnICsgczsKfQoKaW50IGxhc3RbMzBdLCBkcFsxMDAwMDVdLCBmWzEwMDAwNV1bMzBdLCBwcnZbMTAwMDA1XVszMF07CnZvaWQgc29sdmUoKXsKICAgIGZvcihpbnQgaSA9IDE7IGkgPCBzLnNpemUoKTsgaSsrKXsKICAgICAgICBmb3IoaW50IGogPSAxOyBqIDw9IDI2OyBqKyspcHJ2W2ldW2pdID0gbGFzdFtqXTsKICAgICAgICBsYXN0W3NbaV0gLSAnYScgKyAxXSA9IGk7CiAgICB9CiAgICBmb3IoaW50IGkgPSAxOyBpIDwgcy5zaXplKCk7IGkrKyl7CiAgICAgICAgaW50IG51bSA9IDAsIGQgPSBzW2ldIC0gJ2EnOwogICAgICAgIGludCBwb3MgPSBpOwogICAgICAgIHdoaWxlKHBvcyAmJiBudW0gPCBkKXsKICAgICAgICAgICAgbnVtKys7CiAgICAgICAgICAgIHBvcyA9IHBydltwb3NdW2QgKyAxXTsKICAgICAgICB9CiAgICAgICAgaWYobnVtID09IGQgJiYgcG9zKXsKICAgICAgICAgICAgZHBbaV0gPSBkICsgMTsKICAgICAgICAgICAgZm9yKGludCBqID0gMTsgaiA8PSBkOyBqKyspewogICAgICAgICAgICAgICAgZHBbaV0gPSBtYXgoZHBbaV0sIGZbcG9zIC0gMV1bal0gKyBkICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZm9yKGludCBqID0gMTsgaiA8PSAyNjsgaisrKXsKICAgICAgICAgICAgaWYoaSAhPSAwKWZbaV1bal0gPSBmW2ktMV1bal07CiAgICAgICAgfQogICAgICAgIGZbaV1bZCArIDFdID0gbWF4KGZbaV1bZCArIDFdLCBkcFtpXSk7CiAgICB9CiAgICBpbnQga3EgPSAwOwogICAgZm9yKGludCBjID0gMTsgYyA8PSAyNjsgYysrKXsKICAgICAgICBrcSA9IG1heChrcSwgZltzLnNpemUoKSAtIDFdW2NdKTsKICAgIH0KICAgIGNvdXQgPDwga3E7Cn0KCgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIG5oYXAoKTsKICAgIHNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQo=