#include<bits/stdc++.h>
#define N 100005
using namespace std;
int n,f[N],a[N];
vector<int> G[N],E[N];
void dfs(int t)
{
	int i;
	for(i=0;i<G[t].size();i++)
		dfs(G[t][i]),E[t].push_back(f[G[t][i]]);
	sort(E[t].begin(),E[t].end());
	for(i=0;i<E[t].size();i++)
		f[t]=max(f[t],E[t][i]+(int)G[t].size()-i);
}
int main()
{
	int i;
	scanf("%d",&n);
	for(i=2;i<=n;i++){
		scanf("%d",&a[i]);
		G[a[i]].push_back(i);
	  }
	dfs(1);
	cout<<f[1];
	return 0;
}
