#include<cstdio>
const int N=1000010,R=9000000;
bool ed[N];
int n,fa[N],in[N],q[N],ql=0,qr=0,ans=0;
char buf[R],*ptr=buf-1;
inline int _int(){
int x=0,c=*++ptr;
while(c<48)c=*++ptr;
while(c>47)x=x*10+c-48,c=*++ptr;
return x;
}
int main(){
fread(buf,1,R-4,stdin);
n=_int();
for(int i=1;i<=n;i++)++in[fa[i]=_int()];
for(int i=1;i<=n;i++)if(!in[i])q[qr++]=i;
while(ql!=qr){
int w=q[ql++];
if(ed[w])continue;
int f=fa[w];
if(!--in[f])q[qr++]=f;
ed[w]=1;
if(!ed[f]){
ed[f]=1;
++ans;
f=fa[f];
if(!--in[f])q[qr++]=f;
}
}
for(int i=1;i<=n;i++)if(!ed[i]){
int c=1,w=fa[i];
ed[w]=1;
while(w!=i){
++c;
ed[w]=1;
w=fa[w];
}
ans+=c>>1;
}
printf("%d",ans);
return 0;
}