import sys
import heapq
n,m = map(int,input().split())
graph = [[] for _ in range(5001)]
for _ in range(m):
    u,v = map(int,input().split())
    graph[u].append(v)
    graph[v].append(u)

# 第二种方法
# 每次只辐射一个点,将待辐射点加入栈
visited = set()
curr = [(0,1)]
heapq.heapify(curr)
while curr:
    dist,node = heapq.heappop(curr)
    if node == n:
        print(dist)
        sys.exit()
    
    for neighbor in graph[node]:
        if neighbor not in visited:
            visited.add(neighbor)
            heapq.heappush(curr,(dist+1,neighbor))
print(-1)