← Home
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+1,I=1e9;
int n,a[N],t,q[N],c,d[N],p[N],s,x,A=I;
vector<int>g[N];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	for(int i=1;i<=n;i++)
	{
		t=0,q[2]=1;
		for(int j=2;j*j<=a[i];j++)
		{
			c=0;
			while(a[i]%j==0)
				a[i]/=j,c++;
			if(c&1)
				q[++t]=j;
		}
		if(a[i]>1)
			q[++t]=a[i];
		if(t==0)
			A=1;
		g[q[1]].push_back(q[2]),g[q[2]].push_back(q[1]);
	}
	for(int i=1;i<=1000;i++)
	{
		for(int j=1;j<N;j++)
			d[j]=I;
		d[i]=0,s=t=0,q[++t]=i;
		while(s<t)
		{
			x=q[++s];
			for(int j=0;j<g[x].size();j++)
				if(g[x][j]!=p[x])
				{
					if(d[g[x][j]]==I)
						d[g[x][j]]=d[x]+1,p[g[x][j]]=x,q[++t]=g[x][j];
					else
						A=min(A,d[x]+d[g[x][j]]+1);
				}
		}
	}
	if(A==I)
		cout<<-1;
	else
		cout<<A;
	return 0;
}