from collections import defaultdict class UnionFind: n = 1 parent_or_size = [-1 for i in range(n)] def __init__(self, n0): self.n = n0 self.parent_or_size = [-1 for _ in range(n0)] def merge(self, a, b): assert 0 <= a < self.n, "0<=a 0: result2.append(result[i]) return result2 def main(): n, m = map(int, input().split()) graph = defaultdict(list) for _ in range(n): b, c = map(int, input().split()) b -= 1 c -= 1 graph[b].append(c) uf = UnionFind(n) for v in graph.values(): for x, y in zip(v, v[1:]): uf.merge(x, y) cnt = [-1] * n for v in graph.values(): cnt[uf.leader(v[0])] += 1 ans = sum([x for x in cnt if x >= 1]) print(ans) if __name__ == "__main__": main()