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)