#include <bits/stdc++.h>

using namespace std;

vector<int>edge[100005];
int dp[100005],x;

int rec(int v)
{
	if(dp[v]>=0) return dp[v];
	vector<int>vec;
	for(int i=0;i<edge[v].size();i++)
	{
		vec.push_back(rec(edge[v][i]));
	}
	sort(vec.begin(),vec.end(),greater<int>());
	int sum=0;
	for(int i=0;i<vec.size();i++)
	{
		if(i == x) break;
		sum+=vec[i];
	}
	return dp[v] = sum+1;
}
int main()
{
	int n,m;
	scanf("%d %d",&n,&m);
	for(int i=2;i<=n;i++)
	{
		int x; scanf("%d",&x);
		edge[x].push_back(i);
	}
	int lb=-1,ub=n;
	while(ub-lb > 1)
	{
		int mid=(lb+ub)>>1;
		x=mid;
		memset(dp,-1,sizeof(dp));
		rec(1);
		if(dp[1] >= m) ub=mid;
		else lb=mid;
	}
	printf("%d\n",ub);
}