#include <bits/stdc++.h>
using namespace std;
const int INF = 100000;
vector<bool> us;
vector<set<int> > g;
void dfs(int x) {
  if (!us[x]) {
    us[x] = 1;
    for (auto i : g[x]) {
      if (!us[i]) dfs(i);
    }
  }
}
bool solve() {
  int n(0);
  cin >> n;
  vector<int> parent(n);
  for (int i = 0; i < n; i++) parent[i] = i;
  vector<int> a(n);
  for (int i = 0; i < n; i++) cin >> a[i];
  g.resize(n);
  for (int i = 0; i < n; i++) {
    g[i].insert(a[i] - 1);
    g[a[i] - 1].insert(i);
  }
  int ans(0);
  us.resize(n);
  for (int i = 0; i < n; i++) {
    if (!us[i]) {
      dfs(i);
      ans++;
    }
  }
  cout << ans;
  return 1;
}
int main() {
  solve();
  return 0;
}
