#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<fstream>
#include<map>
#include<ctime>
#include<set>
#include<queue>
#include<cmath>
#include<vector>
#include<bitset>
#include<functional>
#define x first
#define y second
#define mp make_pair
#define pb push_back
#define REP(i,l,r) for((i)=(l);(i)<=(r);++(i))
#define REP2(i,l,r) for((i)=(l);(i)!=(r);++(i))
using namespace std;
typedef long long LL;
typedef double ld;
const int MAX=1000000+10;
int n;
int ans;
int fa[MAX];
int findfather(int u)
{
return u==fa[u]?u:fa[u]=findfather(fa[u]);
}
int main()
{
int i,p;
scanf("%d",&n);
REP(i,1,n)
fa[i]=i;
REP(i,1,n)
{
scanf("%d",&p);
fa[findfather(i)]=findfather(p);
}
REP(i,1,n)
if(findfather(i)==i)
++ans;
cout<<ans<<endl;
return 0;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxjc3RkbGliPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTxmc3RyZWFtPgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPGN0aW1lPgojaW5jbHVkZTxzZXQ+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxiaXRzZXQ+CiNpbmNsdWRlPGZ1bmN0aW9uYWw+CiNkZWZpbmUgeCBmaXJzdAojZGVmaW5lIHkgc2Vjb25kCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgUkVQKGksbCxyKSBmb3IoKGkpPShsKTsoaSk8PShyKTsrKyhpKSkKI2RlZmluZSBSRVAyKGksbCxyKSBmb3IoKGkpPShsKTsoaSkhPShyKTsrKyhpKSkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIExMOwp0eXBlZGVmIGRvdWJsZSBsZDsKCmNvbnN0IGludCBNQVg9MTAwMDAwMCsxMDsKCmludCBuOwppbnQgYW5zOwppbnQgZmFbTUFYXTsKCmludCBmaW5kZmF0aGVyKGludCB1KQp7CglyZXR1cm4gdT09ZmFbdV0/dTpmYVt1XT1maW5kZmF0aGVyKGZhW3VdKTsKfQoKaW50IG1haW4oKQp7CglpbnQgaSxwOwoJc2NhbmYoIiVkIiwmbik7CglSRVAoaSwxLG4pCgkJZmFbaV09aTsKCVJFUChpLDEsbikKCXsKCQlzY2FuZigiJWQiLCZwKTsKCQlmYVtmaW5kZmF0aGVyKGkpXT1maW5kZmF0aGVyKHApOwoJfQoJUkVQKGksMSxuKQoJCWlmKGZpbmRmYXRoZXIoaSk9PWkpCgkJCSsrYW5zOwoJY291dDw8YW5zPDxlbmRsOwoJcmV0dXJuIDA7Cn0K