N,M = map(int,input().split()) G = [[] for i in range(N)] for _ in range(M): a,b = map(int,input().split()) G[a - 1].append(b - 1) G[b - 1].append(a - 1) from collections import deque q = deque([]) q.append([0, 0]) visited = [False] * N visited[0] = True while q: v, c = q.popleft() if v == N - 1: print(c) break for child in G[v]: if visited[child]: continue visited[child] = True q.append([child, c + 1]) else: print(-1)