#include <iostream>
#include <vector>
#include <utility>
#include <deque>
#define vi vector<int>
#define pii pair<int,int>
#define vpii vector<pii>
#define dqi deque<int>
#define pb push_back
#define pf push_front
#define ppf pop_front
#define ppb pop_back
#define mp make_pair
#define INFINITY (1<<20)
using namespace std;
int main()
{
int n,m,from,to;
cin>>n>>m;
vector<vpii> adj(n+1);
vi d(n+1,INFINITY),color(n+1,1);
dqi q;
for(int i=0;i<m;i++){
cin>>from>>to;
adj[from].pb(mp(to,0));
adj[to].pb(mp(from,1));
}
d[1]=0;
color[1]=2;
q.pf(1);
int u,v,w,size;
while(!q.empty()){
u=q.front();
q.ppf();
size=adj[u].size();
for(int i=0;i<size;i++){
v=adj[u][i].first;
w=adj[u][i].second;
if(d[v]>d[u]+w){
if(w){
q.pb(v);
d[v]=d[u]+1;
}
else{
q.pf(v);
d[v]=d[u];
}
}
//color[u]=0;
}
}
if(d[n]==INFINITY)cout<<-1;
else cout<<d[n];
cout<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPGRlcXVlPgogCiNkZWZpbmUgdmkgdmVjdG9yPGludD4KI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIHZwaWkgdmVjdG9yPHBpaT4KI2RlZmluZSBkcWkgZGVxdWU8aW50PgogCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGYgcHVzaF9mcm9udAojZGVmaW5lIHBwZiBwb3BfZnJvbnQKI2RlZmluZSBwcGIgcG9wX2JhY2sKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBJTkZJTklUWSAoMTw8MjApCiAKIAogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogICAgaW50IG1haW4oKQogICAgewogICAgICAgIGludCBuLG0sZnJvbSx0bzsKICAgICAgICAKICAgICAgICBjaW4+Pm4+Pm07CiAgICAgICAgCiAgICAgICAgdmVjdG9yPHZwaWk+IGFkaihuKzEpOwogICAgICAgIHZpIGQobisxLElORklOSVRZKSxjb2xvcihuKzEsMSk7CiAgICAgICAgZHFpIHE7CiAgICAgICAgCiAgICAgICAgZm9yKGludCBpPTA7aTxtO2krKyl7CiAgICAgICAgICAgIAogICAgICAgICAgICBjaW4+PmZyb20+PnRvOwogICAgICAgICAgICAKICAgICAgICAgICAgYWRqW2Zyb21dLnBiKG1wKHRvLDApKTsKICAgICAgICAgICAgYWRqW3RvXS5wYihtcChmcm9tLDEpKTsKICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgIGRbMV09MDsKICAgICAgICBjb2xvclsxXT0yOwogICAgICAgIHEucGYoMSk7CiAgICAgICAgCiAgICAgICAgaW50IHUsdix3LHNpemU7CiAgICAgICAgCiAgICAgICAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgICAgICAgICAgIAogICAgICAgICAgICB1PXEuZnJvbnQoKTsKICAgICAgICAgICAgcS5wcGYoKTsKICAgICAgICAgICAgc2l6ZT1hZGpbdV0uc2l6ZSgpOwogICAgICAgICAgICAKICAgICAgICAgICAgZm9yKGludCBpPTA7aTxzaXplO2krKyl7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHY9YWRqW3VdW2ldLmZpcnN0OwogICAgICAgICAgICAgICAgdz1hZGpbdV1baV0uc2Vjb25kOwogICAgICAgICAgICAgICAgaWYoZFt2XT5kW3VdK3cpewogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYodyl7CiAgICAgICAgICAgICAgICAgICAgICAgIHEucGIodik7CiAgICAgICAgICAgICAgICAgICAgICAgIGRbdl09ZFt1XSsxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICBxLnBmKHYpOwogICAgICAgICAgICAgICAgICAgICAgICBkW3ZdPWRbdV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy9jb2xvclt1XT0wOwogICAgICAgIH0KICAgIH0KICAgICAgICAKICAgICAgICBpZihkW25dPT1JTkZJTklUWSljb3V0PDwtMTsKICAgICAgICBlbHNlIGNvdXQ8PGRbbl07CiAgICAgICAgCiAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAKICAgICAgICByZXR1cm4gMDsKICAgIH0=