#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
#include <cstring>
#include <utility>
using namespace std;
const int N = 1e5+10;
int n,m,f[N],d[N];
queue<int> q;
vector<pair<int,int> > g[N];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
d[i]=1e9;
int x,y;
for(int i=1;i<=m;i++){
cin>>x>>y;
g[x].push_back(make_pair(y,1));
}
q.push(1);
d[1]=1;
f[1]=1;
while(!q.empty()){
int k=q.front();
for(auto j:g[k]){
int pos=j.first;
if(d[pos]>d[k]+1){
d[pos]=d[k]+1;
if(f[pos]==0)q.push(pos),f[pos]=1;
}
}
q.pop();
f[k]=0;
}
if(d[m]==1e9)cout << "-1";
else cout << d[m];
return 0;
}