from collections import *
from math import *
from heapq import *
n,m = map(int,input().split())
g = [deque() for i in range(5001)]
st = [0 for i in range(5001)]
dist = [inf for i in range(5001)]
for i in range(m):
    a,b = map(int,input().split())
    g[a].append((b,1))
    g[b].append((a,1))
def dijkstra():
    dist[1] = 0
    pq = []
    heappush(pq,(0,1))
    while pq:
        distance,ver = heappop(pq)
        if st[ver] == 1:
            continue
        st[ver] = 1
        for t,l in g[ver]:
            if dist[t] > distance + l:
                dist[t] = distance + l
                heappush(pq,(dist[t],t))
    if dist[n] == inf:
        return -1
    return dist[n]    
print(dijkstra())