from collections import deque from math import isinf def bfs(g, s): q = deque([s]) d = [float('inf')] * len(g) d[s] = 0 while q: v = q.popleft() for u in g[v]: if isinf(d[u]): d[u] = d[v] + 1 q.append(u) return d def main(): n, m = map(int, input().split()) g = [[] for _ in range(n)] for i in range(m): a, b = map(int, input().split()) g[a-1].append(b-1) x = bfs(g, 0) y = bfs(g, n-2) z = bfs(g, n-1) ans = min(x[n-2] + y[n-1] + z[0], x[n-1] + z[n-2] + y[0]) print(-1 if isinf(ans) else ans) if __name__ == '__main__': main()