n, m = map(int, input().split()) g = [[] for _ in range(n)] g2 = [[] for _ in range(n)] inv = [0] * n for i in range(m): a, b = map(int, input().split()) g[a - 1].append(b - 1) g2[b - 1].append(a - 1) inv[b - 1] += 1 s = [] d = [-1] * n for i in range(n): if inv[i] == 0: s.append(i) d[i] = 0 while s: p = s.pop() for node in g[p]: inv[node] -= 1 if inv[node] == 0: t = -1 for node2 in g2[node]: if t < d[node2]: t = d[node2] d[node] = d[node2] + 1 s.append(node) if -1 in d: print(-1) else: print(max(d) + 1)