#include<bits/stdc++.h>
using namespace std;
int dis[60][60],t1,t2;
bool is_ok[60][60][70];
int n,m;
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) fill(dis[i]+1,dis[i]+n,999999999);
while(m--){
scanf("%d%d",&t1,&t2);
dis[t1][t2]=1;
is_ok[t1][t2][0]=1;
}
for(int p=1;p<=64;p++)
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(is_ok[i][k][p-1]&&is_ok[k][j][p-1]){
is_ok[i][j][p]=1;
dis[i][j]=1;
}
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]);
printf("%d\n",dis[1][n]);
}