#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
struct E {
int nxt,to;
}e[N<<1];
int head[N],tot;
void add(int x,int y) {
e[++tot].nxt = head[x];
head[x] = tot;
e[tot].to = y;
}
int dis1[N],dis2[N],fa[N];
void dfs1(int x,int f) {
fa[x] = f;
if (x!=f)dis1[x] = dis1[f]+1;
for (int i = head[x];i;i=e[i].nxt)
if (e[i].to!=f)
dfs1(e[i].to,x);
}
void dfs2(int x,int f) {
if (x!=f)dis2[x] = dis2[f]+1;
for (int i = head[x];i;i=e[i].nxt)
if (e[i].to!=f)
dfs2(e[i].to,x);
}
int main() {
int n,t;
scanf("%d%d",&n,&t);
int x,y;
for (int i = 1;i< n;i++) {
scanf("%d%d",&x,&y);
add(x,y);add(y,x);
}
dfs1(1,1);
x = n;
while (dis1[x] > t)
x = fa[x];
int ans = 0;
dis1[x] = 0;
dfs1(x,x);
dis2[n] = 0;
dfs2(n,n);
for (int i = 1;i<= n;i++)
if (2*dis1[i] <= dis2[i])
ans = max(ans,((dis2[i]+1)>>1));
printf("%d\n",ans);
return 0;
}