#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n,a;vector<int>x[120000];
int dfs(int p){
	vector<int>J;
	for(int i=0;i<x[p].size();i++){
		J.push_back(dfs(x[p][i]));
	}
	sort(J.begin(),J.end());int maxn=0;
	for(int i=0;i<(int)J.size();i++){
		maxn=max(maxn,J[i]+(int)J.size()-i);
	}
	return maxn;
}
int main(){
	cin>>n;for(int i=2;i<=n;i++){cin>>a;x[a].push_back(i);}
	cout<<dfs(1)<<endl;
	return 0;
}
