// 环图解法
// 值得一提的是,有一个贪心的解法,细看其实还是对环图进行了操作,比如
// 将这个元素直接放到对应的位置上相当于直接让对应位置元素形成了自环,
// 然后这个元素获得了另一个元素的边,等价于环图的操作
#include <bits/stdc++.h>
using namespace std;
const int N = 10010;
int n;
int a[N];
int p[N], cnt[N];
int find(int x)
{
if(p[x] != x) p[x] = find(p[x]);
return p[x];
}
int main()
{
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i <= n; i++) p[i] = i, cnt[i] = 1;
for(int i = 1; i <= n; i++)
{
int x = i, y = a[i];
int px = find(x), py = find(y);
if(px != py)
{
cnt[py] += cnt[px];
p[px] = py;
}
}
int ans = 0;
for(int i = 1; i <= n; i++)
if(p[i] == i) ans += cnt[i] - 1;
cout << ans;
return 0;
}