#include<bits/stdc++.h>
#define RG register
#define il inline
#define N 10000
#define Inf (1<<30)
using namespace std;
struct ed{int nxt,to;}e[N*2];
int head[N],tot,n,Ans,f[N];
void link(int u,int v){e[tot].nxt=head[u];e[tot].to=v;head[u]=tot++;}
void LINK(int u,int v){link(u,v),link(v,u);}
void dfs(int u,int faa){int Min=Inf,Max=-Inf;
for(int i=head[u];i!=-1;i=e[i].nxt)if(e[i].to!=faa){
int v=e[i].to;dfs(v,u);
Min=min(Min,f[v]);
Max=max(Max,f[v]);
}if(Max+Min<=3)f[u]=Min+1;//若能够到达最短的一个,说明下面有,它能弥补空缺
else f[u]=Max+1;//否则的话,需要满足最紧迫的需求。
if(Min==Inf)f[u]=3;
if(f[u]==5)Ans++,f[u]=0;
if(faa==-1&&f[u]>2)Ans++;
}
int main(){
memset(head,-1,sizeof(head));
scanf("%d",&n);for(int i=1;i<n;++i){int num;scanf("%d",&num),LINK(i+1,num);}
dfs(1,-1);cout<<Ans;
return 0;
}