N,M = map(int,input().split()) G = [[] for i in range(N)] for i in range(M): u,v = map(int,input().split()) u-=1 v-=1 G[u].append(v) stack = [(0,False,False,0)] alr = set() for i,f1,f2,c in stack: if i == 0 and f1 and f2: print(c) exit() for j in G[i]: x = (j,f1|(j==N-2),f2|(j==N-1)) if x not in alr: alr.add(x) y = (j,f1|(j==N-2),f2|(j==N-1),c+1) stack.append(y) print(-1)