#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
const long long MAXN = 1e6 + 7;
const long long INF = LONG_LONG_MAX;
int par[MAXN];
int find(int a) {
  if (par[a] < 0)
    return a;
  else
    return par[a] = find(par[a]);
}
void _union(int a, int b) {
  par[a] += par[b];
  par[b] = a;
}
void solve() {
  int n;
  cin >> n;
  int cnt = 0;
  memset(par, -1, sizeof(par));
  for (int i = 0; i < (n); i++) {
    int v;
    cin >> v;
    int u = i + 1;
    if (u > v) swap(u, v);
    u = find(u);
    v = find(v);
    if (u != v) _union(u, v);
  }
  for (int i = 1; i < (n + 1); i++) {
    if (par[i] < 0) cnt++;
  }
  cout << cnt << "\n";
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  solve();
}
