import sys
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)
# 我的思路是
# 从起点向外辐射,判断终点是否为起点的邻接点
# 如果是停止循环
# 如果不是将点集更换为起点的邻边
# 再以新的点集向外辐射
# 每辐射一次distance+1
# 我需要两个点集,一个用来存储已经辐射过的点
# 一个用来存储当前需要检查的点
# 如果当前需要检查的点为空,那么就停止循环
a = set(graph[1])
b = {1}
distance = 0
while a:
distance += 1
b = a|b
if n in a:
print(distance)
sys.exit()
for point in a:
a = a|set(graph[point])
a = a - b
print(-1)


京公网安备 11010502036488号