#include <stdio.h>
#include <string.h>
#include <algorithm>
#define MN 2000
#define MM 2000
#define INF 0x7fffffff
int n,k,ans=INF,cnt;
bool usd[MN+5];
int d[MN+5],hd[MN+5],to[MM+5],nxt[MM+5],rn=0;
inline void add(int u,int v){
	++rn; d[u]++;
	nxt[rn]=hd[u],hd[u]=rn;
	to[rn]=v;
}
void dfs(int u,int de){
	usd[u]=true;
	if(de>k)cnt++;
	for(int i=hd[u];i!=-1;i=nxt[i]){
		if(usd[to[i]])continue;
		dfs(to[i],de+1);
	}
	usd[u]=false;
}
int main(){
	memset(hd,0xff,sizeof(hd));
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n-1;i++){
		int a,b;
		scanf("%d%d",&a,&b);
		add(a,b),add(b,a);
	}
	for(int i=1;i<=n;i++){
		if(d[i]!=1)continue;
		cnt=0; dfs(i,0);
		ans=std::min(ans,cnt);
	}
	printf("%d",ans);
}