#include<iostream>
#include<cstdio>
#define M 2010
using namespace std;
int n,num,L,R,ans,tot,k;
int head[M],U[M],V[M];
struct edge{int next,to;}e[M<<1];
void add(int from,int to) {
	e[++num]=(edge){head[from],to};
	head[from]=num;
}
void dfs(int x,int fa,int dep) {
	if(dep>k/2) tot++;
	for(int i=head[x];i;i=e[i].next)
		if(e[i].to!=fa) dfs(e[i].to,x,dep+1);
}
int main() {
	scanf("%d%d",&n,&k);ans=n;
	for(int i=1;i<n;i++) {
		scanf("%d%d",&U[i],&V[i]);
		add(U[i],V[i]);add(V[i],U[i]);
	}
	if(k&1) {
		for(int i=1;i<n;i++) {
			tot=0;
			dfs(U[i],V[i],0);
			dfs(V[i],U[i],0);
			ans=min(ans,tot);
		}
	}
	else {
		for(int i=1;i<=n;i++)
			tot=0,dfs(i,0,0),ans=min(ans,tot);
	}
	printf("%d\n",ans);
	return 0;
}