#include<bits/stdc++.h>
using namespace std;
const int maxn=2e6+10;
int tot,head[maxn],ver[maxn],next[maxn],edge[maxn];
void add(int x,int y,int z)
{
ver[++tot]=y;edge[tot]=z;
next[tot]=head[x],head[x]=tot;
}
int n,k;
int fa[maxn],d[maxn],sum[maxn],f[maxn],faq,stx,maxd,ans=0;
void dfs(int x,int pre)
{
if(d[x]>maxd)maxd=d[x],faq=x;
for(int i=head[x];i;i=next[i])
{
int y=ver[i];
if(y==pre)continue;
d[y]=d[x]+1;
fa[y]=x;
dfs(y,x);
}
}
void dfs2(int x,int pre)
{
for(int i=head[x];i;i=next[i])
{
int y=ver[i];
if(y==pre)continue;
if(f[x]==1&&f[y]==1)edge[i]=-1;
dfs(y,x);
}
}
void dfs3(int x,int pre)
{
for(int i=head[x];i;i=next[i])
{
int y=ver[i];
if(y==pre)continue;
dfs(y,x);
ans=max(ans,sum[x]+sum[y]+edge[i]);
sum[x]=max(sum[x],sum[y]+edge[i]);
}
}
int main()
{
cin>>n>>k;
for(int i=1,x,y;i<n;i++)
{
cin>>x>>y;
add(y,x,1);
add(x,y,1);
}
dfs(1,0);memset(d,0,sizeof(d));memset(fa,0,sizeof(fa));maxd=0;
dfs(faq,0);
stx=faq;
for(int i=1;i<=d[faq]+1;i++)f[stx]=1,stx=fa[stx];
dfs2(1,0);
if(k==1)
{
cout<<2*(n-1)-d[faq]+1;
return 0;
}
dfs3(1,0);
cout<<2*n-ans-d[faq];
return 0;
}