#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e3+10;
int n, k , cnt[maxn][2], h[maxn],ans=1e9;
bool mark[maxn];
vector<int> veci[maxn];
void dfs(int a){
	for(auto x : veci[a])
		if(mark[x] == 0){
			mark[x]=1;
			h[x]=h[a]+1;
			if(h[x] > k/2)
				cnt[x][0]+=1;
			if(h[x] > (k+1)/2)
				cnt[x][1]+=1;
			dfs(x);
			cnt[a][0]+=cnt[x][0];
			cnt[a][1]+=cnt[x][1];
		}
}
int  check ( int a){
	fill_n(mark , maxn , 0);
	memset(cnt , 0 , sizeof cnt);
	mark[a]=1;
	h[a]=0;
	dfs(a);
	if(k%2 == 0 ){
		int  sum=0;
		for(auto x : veci[a ]){
			sum+= cnt[x][0];
		}
		return sum ;
	}
	int sum =0, maxi =0;
	for(auto x : veci[a]){
		sum+= cnt[x][0];
		maxi= max ( maxi , cnt[x][0] - cnt[x][1]);
	}
	return sum - maxi ; 
}
int main()
{
	cin>>n>>k;
	for(int i=0;i<n-1;i++){
		int a, b;cin>>a>>b;
		veci[a].push_back(b);
		veci[b].push_back(a);
	}
	for(int i =1 ;i<= n;i++)
		ans = min ( ans , check(i)  );
	cout<<ans;
}