#include<bits/stdc++.h>
using namespace std;
int ans=1000006;
void dfs(int prev,int cur,int cnt, unordered_set <int> &s,vector<vector<int> > &g)
{
int i;
for(i=0;i<g[cur].size();i++)
{
if(g[cur][i]!=prev)
{
if(s.find(g[cur][i])!=s.end())
{
if(ans>cnt)
ans=cnt;
}
else
{
s.insert(g[cur][i]);
dfs(cur,g[cur][i],cnt+1,s,g);
}
}
}
}
int main()
{
int i,j,n,x;
cin>>n;
vector<int> a;
for(i=0;i<n;i++)
{
cin>>x;
a.push_back(x);
}
for(i=0;i<n;i++)
{
if(sqrt(a[i])*sqrt(a[i])==n)
{
cout<<"1";
return 0;
}
}
sort(a.begin(),a.end());
for(i=1;i<a.size();i++)
{
if(a[i]==a[i-1])
{
cout<<"2";
return 0;
}
}
vector<vector<int> > d;
vector<int> h,p;
for(i=0;i<1000006;i++)
{
h.push_back(0);
p.push_back(0);
vector<int> temp;
d.push_back(temp);
}
p[1]=0;
int c=0;
c++;
for(i=2;i<1000006;i++)
{
if(h[i]==0)
{
d[i].push_back(0);
p[i]=c;
c++;
for(j=i;j<1000006;j=j+i)
{
h[j]=1;
if(d[j].size()<4)
{
d[j].push_back(p[i]);
}
}
}
}
vector<vector<int> > g;
for(i=0;i<c;i++)
{
vector<int> temp;
g.push_back(temp);
}
for(i=0;i<a.size();i++)
{
g[d[a[i]][0]].push_back(d[a[i]][1]);
g[d[a[i]][1]].push_back(d[a[i]][0]);
}
for(i=0;i<g.size();i++)
{
if(g[i].size()!=0)
{
int base=i;
int prev=-1;
int cur=i;
int cnt=1;
unordered_set<int> s;
s.insert(i);
dfs(prev,cur,cnt,s,g);
}
}
cout<<ans;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsJCQoJCQppbnQgYW5zPTEwMDAwMDY7Cgp2b2lkIGRmcyhpbnQgcHJldixpbnQgY3VyLGludCBjbnQsIHVub3JkZXJlZF9zZXQgPGludD4gJnMsdmVjdG9yPHZlY3RvcjxpbnQ+ID4gJmcpCnsKCWludCBpOwoJZm9yKGk9MDtpPGdbY3VyXS5zaXplKCk7aSsrKQoJewoJCWlmKGdbY3VyXVtpXSE9cHJldikKCQl7CgkJCWlmKHMuZmluZChnW2N1cl1baV0pIT1zLmVuZCgpKQoJCQl7CgkJCQlpZihhbnM+Y250KQoJCQkJYW5zPWNudDsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXMuaW5zZXJ0KGdbY3VyXVtpXSk7CgkJCQlkZnMoY3VyLGdbY3VyXVtpXSxjbnQrMSxzLGcpOwoJCQl9CgkJfQoJfQp9CgkJCmludCBtYWluKCkKewoJaW50IGksaixuLHg7CgljaW4+Pm47CgkKCXZlY3RvcjxpbnQ+IGE7Cglmb3IoaT0wO2k8bjtpKyspCgl7CgkJY2luPj54OwoJCWEucHVzaF9iYWNrKHgpOwoJfQoJCglmb3IoaT0wO2k8bjtpKyspCgl7CgkJaWYoc3FydChhW2ldKSpzcXJ0KGFbaV0pPT1uKQoJCXsKCQkJY291dDw8IjEiOwoJCQlyZXR1cm4gMDsKCQl9Cgl9CgkKCQoJc29ydChhLmJlZ2luKCksYS5lbmQoKSk7CgkKCWZvcihpPTE7aTxhLnNpemUoKTtpKyspCgl7CgkJaWYoYVtpXT09YVtpLTFdKQoJCXsKCQkJY291dDw8IjIiOwoJCQlyZXR1cm4gMDsKCQl9Cgl9CgkKCXZlY3Rvcjx2ZWN0b3I8aW50PiA+IGQ7Cgl2ZWN0b3I8aW50PiBoLHA7CgkKCWZvcihpPTA7aTwxMDAwMDA2O2krKykKCXsKCQloLnB1c2hfYmFjaygwKTsKCQlwLnB1c2hfYmFjaygwKTsKCQl2ZWN0b3I8aW50PiB0ZW1wOwoJCWQucHVzaF9iYWNrKHRlbXApOwoJfQoJCglwWzFdPTA7CglpbnQgYz0wOwoJYysrOwoJCglmb3IoaT0yO2k8MTAwMDAwNjtpKyspCgl7CgkJaWYoaFtpXT09MCkKCQl7CgkJCWRbaV0ucHVzaF9iYWNrKDApOwoJCQlwW2ldPWM7CgkJCWMrKzsKCQkJZm9yKGo9aTtqPDEwMDAwMDY7aj1qK2kpCgkJCXsKCQkJCWhbal09MTsKCQkJCWlmKGRbal0uc2l6ZSgpPDQpCgkJCQl7CgkJCQkJZFtqXS5wdXNoX2JhY2socFtpXSk7CgkJCQl9CgkJCX0KCQl9Cgl9CgkKCXZlY3Rvcjx2ZWN0b3I8aW50PiA+IGc7CgkKCWZvcihpPTA7aTxjO2krKykKCXsKCQl2ZWN0b3I8aW50PiB0ZW1wOwoJCWcucHVzaF9iYWNrKHRlbXApOwoJfQoJCglmb3IoaT0wO2k8YS5zaXplKCk7aSsrKQoJewoJCWdbZFthW2ldXVswXV0ucHVzaF9iYWNrKGRbYVtpXV1bMV0pOwoJCWdbZFthW2ldXVsxXV0ucHVzaF9iYWNrKGRbYVtpXV1bMF0pOwoJfQoJCglmb3IoaT0wO2k8Zy5zaXplKCk7aSsrKQoJewoJCWlmKGdbaV0uc2l6ZSgpIT0wKQoJCXsKCQkJaW50IGJhc2U9aTsKCQkJaW50IHByZXY9LTE7CgkJCWludCBjdXI9aTsKCQkJaW50IGNudD0xOwoJCQl1bm9yZGVyZWRfc2V0PGludD4gczsKCQkJcy5pbnNlcnQoaSk7CgkJCWRmcyhwcmV2LGN1cixjbnQscyxnKTsKCQl9Cgl9CgkKCWNvdXQ8PGFuczsKCXJldHVybiAwOwp9