记录
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll>edge[114514];
ll n,k,dp1[100006],dp2[100006],ans,cnt,s,t,fa[100006];
bool used[100006];
void dfs(ll num,ll pre,ll* r,ll sum);
void dp(ll num,ll pre);
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>k;
ans=(n-1)*2;
for(int i=1;i<n;i++){
ll a,b;
cin>>a>>b;
used[a]=used[b]=1;
edge[a].push_back(b);
edge[b].push_back(a);
}
ll cnt1=0;
dfs(1,0,&s,0);
cnt=0;
dfs(s,0,&t,0);fa[s]=0;
if(k==2){
for(int i=t;i;i=fa[i]){
used[i]=0;
}
dp(1,0);
for(int i=1;i<=n;i++){
cnt1=max(cnt1,dp1[i]+dp2[i]);
}
cnt1-=1;
}
ans=ans-cnt+1-cnt1;
cout<<ans<<endl;
return 0;
}
void dfs(ll num,ll pre,ll* r,ll sum){
if(sum>cnt){
cnt=sum;
*r=num;
}
for(auto i:edge[num]){
if(i!=pre){
dfs(i,num,r,sum+1);
fa[i]=num;
}
}
}
void dp(ll num,ll pre){
for(auto i:edge[num]){
if(i!=pre){
dp(i,num);
if(dp1[num]<=dp1[i]+used[i]*2-1){
dp2[num]=dp1[num];
dp1[num]=dp1[i]+used[i]*2-1;
}else if(dp2[num]<=dp1[i]+used[i]*2-1){
dp2[num]=dp1[i]+used[i]*2-1;
}
}
}
}