#include <bits/stdc++.h>
using namespace std;

const int MN=100000;

vector<int> e[MN];
int d[MN];


void dfs(int i)
{
  vector<int> ds(e[i].size());
  for(int x=0;x<e[i].size();x++){
    int j=e[i][x];
    dfs(j);
    ds[x]=d[j];
  }
  sort(ds.begin(),ds.end());
  d[i]=0;
  for(int x=0;x<ds.size();x++){
    d[i]=max(d[i],ds[x]+(int)ds.size()-x);
  }
  //printf("%d %d\n",i+1,d[i]);
}

int main()
{
  int n;
  scanf("%d",&n);
  static int a[MN];
  for(int i=1;i<n;i++){
    scanf("%d",a+i);
    a[i]--;
    e[a[i]].push_back(i);
  }
  dfs(0);
  printf("%d\n",d[0]);
  return 0;
}
