import sys;input=sys.stdin.readline def MI():return map(int,input().split()) def PRINT(ans): from collections.abc import Sequence if isinstance(ans,bool): s='Yes' if ans else 'No' elif isinstance(ans,Sequence) and not isinstance(ans,str): s='\n'.join(map(str,ans)) else: s=str(ans) sys.stdout.write(s+'\n') INF=10**18 mod=998244353 D4=[(1,0),(-1,0),(0,1),(0,-1)] D8=D4+[(1,1),(-1,1),(1,-1),(-1,-1)] #from math import gcd,lcm,log2,sqrt,isqrt #from collections import deque,defaultdict #from heapq import heappop,heappush,heapify #from bisect import bisect_left,bisect_right #from itertools import permutations,combinations,combinations_with_replacement,product #from functools import lru_cache #from atcoder.dsu import DSU #from atcoder.math import inv_mod #from atcoder.segtree import Segtree #from atcoder.fenwicktree import FenwickTree ## main N=int(input()) A=list(MI()) into=[0]*(N+1) for x in A: if x!=0: into[x]+=1 ans=set() for i in range(1,N+1): if into[i]!=0: continue j=A[i-1] if j==0: continue idx=A[j-1] if idx==0: continue ans.add(idx) print(len(ans))