import sys input = sys.stdin.readline line = input().split() if not line: sys.exit() n, m = map(int, line) g = [[] for _ in range(n + 1)] gr = [[] for _ in range(n + 1)] for _ in range(m): u, v = map(int, input().split()) g[u].append(v) gr[v].append(u) used = [0] * (n + 1) order = [] head = [0] * (n + 1) for i in range(1, n + 1): if not used[i]: stack = [i] used[i] = 1 while stack: v = stack[-1] if head[v] < len(g[v]): to = g[v][head[v]] head[v] += 1 if not used[to]: used[to] = 1 stack.append(to) else: stack.pop() order.append(v) used = [0] * (n + 1) ans = 0 for i in reversed(order): if not used[i]: stack = [i] used[i] = 1 size = 0 while stack: v = stack.pop() size += 1 for to in gr[v]: if not used[to]: used[to] = 1 stack.append(to) ans += min(size, 2) print(ans)