from collections import defaultdict,deque N,M=map(int,input().split()) G=[[] for _ in range(4*N+1)] #Nで割った余りが #0 ->F,F #1 -> T,F #2 -> F,T #3 -> T,T for i in range(M): u,v=map(int,input().split()) G[u].append(v) G[N+u].append(N+v) G[2*N+u].append(2*N+v) G[3*N+u].append(3*N+v) G[N-1].append(N+N-1) G[2*N+N-1].append(3*N+N-1) G[N].append(2*N+N) G[N+N].append(2*N+N+N) dis=[-1 for _ in range(4*N+1)] que=deque([1]) seen=[False]*(4*N+1) seen[1]=True dis[1]=0 while len(que): p=que.popleft() for q in G[p]: if(not seen[q]): seen[q]=True dis[q]=dis[p]+1 que.append(q) print(max(dis[3*N+1]-2,-1))