#include<bits/stdc++.h>
using namespace std;
#define maxn 100005
int n;
int k;
int l;
int dp[maxn];
int deep[maxn];
int dis[maxn];
int midpoint;
vector<int>tree[maxn];
int ans;
void dfs(int now,int fa){
int max1=0;
int max2=0;
// cout<<now<<' '<<fa;
for(int i=0;i<tree[now].size();i++){
int v=tree[now][i];
if(v==fa)continue;
dfs(v,now);
int temp=dp[v]+1;
dp[now]=max(temp,dp[now]);
if(temp>max1)max2=max1,max1=temp;
else if(temp>max2)max2=temp;
}
if(l<max1+max2){
midpoint=now;
l=max1+max2;
}
// cout<<l<<endl;
}
void dfs1(int now,int fa){
int max1=0;
int max2=0;
// cout<<now<<' '<<fa;
deep[now]=deep[fa]+1;
dp[now]=deep[now];
for(int i=0;i<tree[now].size();i++){
int v=tree[now][i];
if(v==fa)continue;
dfs1(v,now);
dp[now]=max(dp[v],dp[now]);
}
dis[now]=dp[now]-deep[now];
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>k;
for(int i=1,u,v;i<n;i++){
cin>>u>>v;
tree[u].push_back(v);
tree[v].push_back(u);
}
dfs(1,0);
dfs1(midpoint,0);
sort(dis+1,dis+n+1);
cout<<dis[n-k];
return 0;
}