#include<bits/stdc++.h>
using namespace std;
int lengthOfLongestSubstring(string s) {
int i = 0, j=1;
int ans = 1;
map<char, int>mp;
mp.insert({s[0], 0});
while(j <= s.length()){
auto itr = mp.find(s[j]);
if(itr != mp.end()){
ans = max(ans, j - i);
i = mp[s[j]] + 1;
mp[s[j]] = j;
}
else
mp.insert({s[j], j});
cout<<i<<" "<<j<<" "<<s[j]<<" "<<ans<<endl;
j++;
}
ans = max(ans, j - i);
// cout<<ans;
return ans;
}
int main(){
string s;
cin >> s;
int ans = lengthOfLongestSubstring(s);
cout<<ans;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGxlbmd0aE9mTG9uZ2VzdFN1YnN0cmluZyhzdHJpbmcgcykgewogICAgICAgIGludCBpID0gMCwgaj0xOwogICAgICAgIGludCBhbnMgPSAxOwogICAgICAgIG1hcDxjaGFyLCBpbnQ+bXA7CiAgICAgICAgbXAuaW5zZXJ0KHtzWzBdLCAwfSk7CiAgICAgICAgd2hpbGUoaiA8PSBzLmxlbmd0aCgpKXsKICAgICAgICAgICAgYXV0byBpdHIgPSBtcC5maW5kKHNbal0pOwogICAgICAgICAgICBpZihpdHIgIT0gbXAuZW5kKCkpewogICAgICAgICAgICAgICAgYW5zID0gbWF4KGFucywgaiAtIGkpOwogICAgICAgICAgICAgICAgaSA9IG1wW3Nbal1dICsgMTsKICAgICAgICAgICAgICAgIG1wW3Nbal1dID0gajsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBtcC5pbnNlcnQoe3Nbal0sIGp9KTsKICAgICAgICAgICAgY291dDw8aTw8IiAiPDxqPDwiICI8PHNbal08PCIgIjw8YW5zPDxlbmRsOwogICAgICAgICAgICBqKys7CiAgICAgICAgfQogICAgICAgIGFucyA9IG1heChhbnMsIGogLSBpKTsKICAgICAgICAvLyBjb3V0PDxhbnM7CiAgICAgICAgcmV0dXJuIGFuczsKICAgIH0KICAgIGludCBtYWluKCl7CiAgICAJc3RyaW5nIHM7CiAgICAJY2luID4+IHM7CiAgICAJaW50IGFucyA9IGxlbmd0aE9mTG9uZ2VzdFN1YnN0cmluZyhzKTsKICAgIAljb3V0PDxhbnM7CiAgICB9