#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn=160;
int n,a[maxn],fa[maxn],d[maxn]
,du[maxn],dp[maxn][maxn],m;
vector<int> g[maxn];
inline int read(){
int num=0; char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9') num=num*10+ch-'0',ch=getchar();
return num;
}
void dfs(int x,int y){
fa[x]=y;
for(int i=0;i<g[x].size();i++){
if(g[x][i]==y) continue;
dfs(g[x][i],x);
}
}
void dp1(int x){
dp[x][1]=du[x];
for(int i=0;i<g[x].size();i++){
if(g[x][i]==fa[x]) continue;
dp1(g[x][i]);
for(int j=m;j>=2;j--){
for(int k=1;k<j;k++){
dp[x][j]=min(dp[x][j],dp[x][k]+dp[g[x][i]][j-k]-2);
}
}
}
}
int main(){
int u,vv,ww;
n=read(); m=read();
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
dp[i][j]=1000;
}
for(int i=1;i<=n;i++) dp[i][0]=0;
for(int i=1;i<=n-1;i++){
u=read(); vv=read();
du[u]++; du[vv]++;
g[u].push_back(vv); g[vv].push_back(u);
fa[vv]=u;
}
//cout<<1<<endl;
//dfs(1,0);
//cout<<2<<endl;
dp1(1);
int ans=10000;
for(int i=1;i<=n;i++) ans=min(ans,dp[i][m]);
cout<<ans<<endl;
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn=160;
int n,a[maxn],fa[maxn],d[maxn]
,du[maxn],dp[maxn][maxn],m;
vector<int> g[maxn];
inline int read(){
int num=0; char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9') num=num*10+ch-'0',ch=getchar();
return num;
}
void dfs(int x,int y){
fa[x]=y;
for(int i=0;i<g[x].size();i++){
if(g[x][i]==y) continue;
dfs(g[x][i],x);
}
}
void dp1(int x){
dp[x][1]=du[x];
for(int i=0;i<g[x].size();i++){
if(g[x][i]==fa[x]) continue;
dp1(g[x][i]);
for(int j=m;j>=2;j--){
for(int k=1;k<j;k++){
dp[x][j]=min(dp[x][j],dp[x][k]+dp[g[x][i]][j-k]-2);
}
}
}
}
int main(){
int u,vv,ww;
n=read(); m=read();
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
dp[i][j]=1000;
}
for(int i=1;i<=n;i++) dp[i][0]=0;
for(int i=1;i<=n-1;i++){
u=read(); vv=read();
du[u]++; du[vv]++;
g[u].push_back(vv); g[vv].push_back(u);
fa[vv]=u;
}
//cout<<1<<endl;
//dfs(1,0);
//cout<<2<<endl;
dp1(1);
int ans=10000;
for(int i=1;i<=n;i++) ans=min(ans,dp[i][m]);
cout<<ans<<endl;
return 0;
}