#include<iostream>
#include<queue>
using namespace std;
const int MAXN=111111;
int n,k;
int deg[MAXN];
int cnt,head[MAXN],nxt[MAXN<<1],to[MAXN<<1];
void addEdge(int u,int v)
{
cnt++;
nxt[cnt]=head[u];
head[u]=cnt;
to[cnt]=v;
}
queue<int> Q;
int vis[MAXN];
int dep[MAXN];
int ans;
int num;
int main()
{
cin>>n>>k;
for(int i=1;i<n;i++)
{
int u,v;
cin>>u>>v;
addEdge(u,v);
addEdge(v,u);
deg[u]++;
deg[v]++;
}
for(int i=1;i<=n;i++)
{
if(deg[i]==1)
{
Q.push(i);
}
}
ans=1;
while(!Q.empty())
{
int u=Q.front();
Q.pop();
vis[u]=1;
for(int i=head[u];i;i=nxt[i])
{
int v=to[i];
if(vis[v])continue;
deg[v]--;
if(deg[v]==1)
{
vis[v]=1;
dep[v]=dep[u]+1;
ans=max(ans,dep[v]);
Q.push(v);
}
}
num++;
if(num==n-k)
{
break;
}
}
cout<<ans;
}