#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
struct dian{
int nxt;
int go;
};
int adj[1000005];
struct dian a[1000005];
int dis[1000005],ecnt=0;
bool pd[1000005];
queue <int> que;
int add(int u,int v)
{
a[++ecnt].go=v;
a[ecnt].nxt=adj[u];
adj[u]=ecnt;
}
void bfs()
{
pd[1]=1;
que.push(1);
while(!que.empty())
{
int u=que.front(),v;
que.pop();
for(int e=adj[u];e!=0;e=a[e].nxt)
{
if(pd[v=a[e].go]!=1)
{
dis[v]=dis[u]+1;
pd[v]=1;
que.push(v);
}
}
}
}
int main(){
int m,n,x,y;
cin>>m>>n;
for(int i=0;i<n;i++)
{
cin>>x>>y;
add(x,y);
}
bfs();
cout<<dis[m]<<endl;
return 0;
}