class UnionFind(): def __init__(self, n): self.siz = n self.parent_or_size = [-1] * n def leader(self, x): if self.parent_or_size[x] < 0: return x else: self.parent_or_size[x] = self.leader(self.parent_or_size[x]) return self.parent_or_size[x] def merge(self, x, y): rx = self.leader(x) ry = self.leader(y) if rx == ry: return False if self.parent_or_size[rx] > self.parent_or_size[ry]: rx, ry = ry, rx self.parent_or_size[rx] += self.parent_or_size[ry] self.parent_or_size[ry] = rx self.siz -= 1 return True N = int(input()) A = list(map(int, input().split())) uf = UnionFind(N) for i in range(N): uf.merge(i, A[i] - 1) print(N - uf.siz)