N, M = map(int, input().split()) par = [0] * N rank = [0] * N def init(n): for i in range(n): par[i] = i rank[i] = 0 def find(x): if par[x] == x: return x else: par[x] = find(par[x]) return par[x] def unite(x, y): x = find(x) y = find(y) if x == y: return if rank[x] < rank[y]: par[x] = y else: par[y] = x if rank[x] == rank[y]: rank[x] += 1 def same(x, y): return find(x) == find(y) init(N) D = dict() E = dict() for _ in range(N): b, c = map(int, input().split()) E[c-1] = 0 if (b-1) not in D: D[b-1] = c-1 else: unite(D[b-1], c-1) F = set([find(i) for i in par if i in E]) print(len(D) - len(F))