#include<bits/stdc++.h>
using namespace std;
#define int long long
#define for1(i,m,n) for(int i=m;i<=n;i++)
#define for0(i,m,n) for(int i=m;i<n;i++)
#define vll(v) v.beign(),v.end()
#define ii pair<int,int>
#define se second
#define fi first
#define el '\n'
const int N=1e6;
const int MOD=1e9+7;
vector<int>v;
int a[N+8],prime[N+8];
void sang(){
memset(a,0,sizeof a);
for(int i=2;i*i<=N;i++)
if(a[i]==0){
for(int j=i*i;j<=N;j+=i){
a[j]=1;
prime[j]=i;
}
}
}
string d[N+8];
unordered_map<string,int>mp;
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
sang();
string s;cin>>s;
for(auto &x:s){
if(x>'9') x=' ';
}
string t;
stringstream ss(s);
while(ss>>t){
v.push_back(stoi(t));
}
for(auto x:v){
if(d[x].size()!=0) continue;
int t=x;
while(t>1){
int pr=prime[t];
if(pr==0&&t>1) {
d[x]+=' '+to_string(t);
break;
}
while(t%pr==0){
t/=pr;
}
d[x]+=' '+to_string(pr);
}
}
int ok=0,ans=0,lengh=0,st=0;
for(auto x:v) {
//cout<<d[x]<<el;
stringstream ss(d[x]);
while(ss>>t){
mp[t]++;
if(mp[t]>=2) ok++;
}
while(ok){
// cout<<x<<el;
lengh--;
stringstream xoa(d[v[st]]);
while(xoa>>t){
if(mp[t]>=2){
ok--;
}
mp[t]--;
}
st++;
}
// cout<<el;
// for(auto x:mp) cout<<x.fi<<' '<<x.se<<el;
lengh++;
ans=max(ans,lengh);
}
cout<<ans;
return 0;
}
/*
a14a5ac7a6bb
ac5b2c3a7b
*/
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgaW50ICBsb25nIGxvbmcKCiNkZWZpbmUgZm9yMShpLG0sbikgZm9yKGludCBpPW07aTw9bjtpKyspCiNkZWZpbmUgZm9yMChpLG0sbikgZm9yKGludCBpPW07aTxuO2krKykKI2RlZmluZSB2bGwodikgdi5iZWlnbigpLHYuZW5kKCkKICNkZWZpbmUgaWkgcGFpcjxpbnQsaW50PgogI2RlZmluZSBzZSBzZWNvbmQKICNkZWZpbmUgZmkgZmlyc3QKICNkZWZpbmUgZWwgJ1xuJwoKIGNvbnN0IGludCBOPTFlNjsKIGNvbnN0IGludCBNT0Q9MWU5Kzc7CnZlY3RvcjxpbnQ+djsKaW50IGFbTis4XSxwcmltZVtOKzhdOwp2b2lkIHNhbmcoKXsKICAgIG1lbXNldChhLDAsc2l6ZW9mIGEpOwogICBmb3IoaW50IGk9MjtpKmk8PU47aSsrKQogICBpZihhW2ldPT0wKXsKICAgIGZvcihpbnQgaj1pKmk7ajw9TjtqKz1pKXsKICAgICAgICBhW2pdPTE7CiAgICAgICAgcHJpbWVbal09aTsKICAgIH0KICAgfQp9CnN0cmluZyBkW04rOF07CnVub3JkZXJlZF9tYXA8c3RyaW5nLGludD5tcDsKIHNpZ25lZCBtYWluKCl7CiAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgIGNpbi50aWUoMCk7CiAgIGNvdXQudGllKDApOwpzYW5nKCk7CiAgIHN0cmluZyBzO2Npbj4+czsKICAgZm9yKGF1dG8gJng6cyl7CiAgICBpZih4Pic5JykgeD0nICc7CiAgIH0KICAgc3RyaW5nIHQ7CiAgIHN0cmluZ3N0cmVhbSBzcyhzKTsKICAgd2hpbGUoc3M+PnQpewogICAgdi5wdXNoX2JhY2soc3RvaSh0KSk7CiAgIH0KCiAgIGZvcihhdXRvIHg6dil7CiAgICAgaWYoZFt4XS5zaXplKCkhPTApIGNvbnRpbnVlOwogICAgIGludCB0PXg7CiAgICAgd2hpbGUodD4xKXsKICAgICBpbnQgcHI9cHJpbWVbdF07CiAgICAgaWYocHI9PTAmJnQ+MSkgewogICAgICAgICAgICBkW3hdKz0nICcrdG9fc3RyaW5nKHQpOwogICAgIGJyZWFrOwogICAgIH0KICAgICB3aGlsZSh0JXByPT0wKXsKICAgICAgICB0Lz1wcjsKICAgICB9CiAgICAgIGRbeF0rPScgJyt0b19zdHJpbmcocHIpOwogICAgIH0KICAgfQogICAKICAgaW50IG9rPTAsYW5zPTAsbGVuZ2g9MCxzdD0wOwogICBmb3IoYXV0byB4OnYpIHsKICAgIC8vY291dDw8ZFt4XTw8ZWw7CiAgICAgIHN0cmluZ3N0cmVhbSBzcyhkW3hdKTsKICAgICAgd2hpbGUoc3M+PnQpewogICAgICAgIG1wW3RdKys7CiAgICAgICAgaWYobXBbdF0+PTIpIG9rKys7CiAgICAgIH0KCiAgICAgIHdoaWxlKG9rKXsKICAgICAgIC8vIGNvdXQ8PHg8PGVsOwogICAgICAgIGxlbmdoLS07CiAgICAgICAgIHN0cmluZ3N0cmVhbSB4b2EoZFt2W3N0XV0pOwogICAgICAgICB3aGlsZSh4b2E+PnQpewogICAgICAgICAgICBpZihtcFt0XT49Mil7CiAgICAgICAgICAgICAgICBvay0tOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG1wW3RdLS07CiAgICAgICAgIH0KICAgICBzdCsrOwogICAgICB9CiAgICAgLy8gY291dDw8ZWw7CiAgICAgLy8gZm9yKGF1dG8geDptcCkgY291dDw8eC5maTw8JyAnPDx4LnNlPDxlbDsgCiAgICAgIGxlbmdoKys7CiAgICAgIGFucz1tYXgoYW5zLGxlbmdoKTsKICAgfQpjb3V0PDxhbnM7CnJldHVybiAwOwogfQovKgphMTRhNWFjN2E2YmIKCmFjNWIyYzNhN2IKKi8K