#include<stdio.h>
#include<string.h>
int judge(char *s,int j,int i);
int lengthOfLongestSubstring(char* s){
int i,j,t,num,len;
len=strlen(s);
int max[len];
for(i=0;i<len;i++)
{for(j=i,num=0;s[j]!='\0'&&(judge(s,j,i));j++)
{ num++; }
max[i]=num;}
for(i=len-2;i>=0;i--)
{ for(j=0;j<=i;j++)
{ if(max[j]<max[j+1])
{ t=max[j];
max[j]=max[j+1];
max[j+1]=t;
}
}
}
return max[0];
}
int judge(char *s,int j,int i)
{int k,n=1;
for(k=i;k<j;k++)
{
if(s[k]==s[j])
{n=0;} }
return n; }
int main()
{ int len,i;
char ch;
char* p=NULL;
for(i=0;(ch=getchar ())!='\n';i++){
p=(char*)realloc(p,(i+1)*sizeof(char));
p[i]=ch;
}
p=(char*)realloc(p,(i+1)*sizeof(char));
p[i]='\0';
printf("%d",lengthOfLongestSubstring(p));
}
#include<string.h>
int judge(char *s,int j,int i);
int lengthOfLongestSubstring(char* s){
int i,j,t,num,len;
len=strlen(s);
int max[len];
for(i=0;i<len;i++)
{for(j=i,num=0;s[j]!='\0'&&(judge(s,j,i));j++)
{ num++; }
max[i]=num;}
for(i=len-2;i>=0;i--)
{ for(j=0;j<=i;j++)
{ if(max[j]<max[j+1])
{ t=max[j];
max[j]=max[j+1];
max[j+1]=t;
}
}
}
return max[0];
}
int judge(char *s,int j,int i)
{int k,n=1;
for(k=i;k<j;k++)
{
if(s[k]==s[j])
{n=0;} }
return n; }
int main()
{ int len,i;
char ch;
char* p=NULL;
for(i=0;(ch=getchar ())!='\n';i++){
p=(char*)realloc(p,(i+1)*sizeof(char));
p[i]=ch;
}
p=(char*)realloc(p,(i+1)*sizeof(char));
p[i]='\0';
printf("%d",lengthOfLongestSubstring(p));
}