#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,a[5000],b[5000];
int dis1[410][410];
int dis2[410][410];
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j)dis1[i][j]=0,dis2[i][j]=0;
else dis1[i][j]=INT_MAX,dis2[i][j]=INT_MAX;
}
}
for(int i=1;i<=m;i++){
cin>>a[i]>>b[i];
dis1[a[i]][b[i]]=dis1[b[i]][a[i]]=1;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(dis1[i][j]==INT_MAX)dis2[i][j]=1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=n;k++){
dis1[j][k]=min(dis1[j][i]+dis1[i][k],dis1[j][k]);
dis2[j][k]=min(dis2[j][i]+dis2[i][k],dis2[j][k]);
}
}
}
if(dis1[1][n]==INT_MAX||dis2[1][n]==INT_MAX){
cout<<-1;
}else{
cout<<max(dis1[1][n],dis2[1][n]);
}
return 0;
}