import sys sys.setrecursionlimit(10 ** 9) n, k = map(int, input().split()) edges = [[] for _ in range(n)] for _ in range(k): r, c = map(int, input().split()) r -= 1 c -= 1 edges[r].append(c) dist = [-1] * n used = [False] * n def dfs(pos): dist[pos] = max(dist[pos], 0) for npos in edges[pos]: if used[npos]: print(-1) exit() if dist[npos] != -1: dist[pos] = max(dist[pos], dist[npos] + 1) continue dfs(npos) dist[pos] = max(dist[pos], dist[npos] + 1) for i in range(n): if dist[i] != -1: continue used[i] = True dfs(i) used[i] = False print(max(dist) + 1)