from collections import deque
def bfs(graph, n):
q = deque()
q.append([1, 0])
dist = [float('inf') for i in range(n+1)]
dist[1] = 0
# BFS
while q:
x,wt=q.popleft() #
for child in graph[x]:
node,dis= child
if wt+dis < dist[node]:
if dis == 0:
q.appendleft([node, wt])
dist[node] = wt
else:
q.append([node, wt+1])
dist[node] = wt+1
print((dist[n] if dist[n] != float('inf') else -1))
n, m = map(int, input().split(' '))
graph = {}
visited = {}
for i in range(1, n+1):
graph[i] = []
visited[i] = []
for i in range(m):
u,v = map(int, input().strip().split(' '))
graph[u].append([v,0])
graph[v].append([u,1])
bfs(graph, n)