    #include<bits/stdc++.h>
    using namespace std ; 
    const int MAXN = 2000 + 100 ; 
     
    int n , k , res  , dp[MAXN] , ans = MAXN; 
    vector<int>adj[MAXN] ; 
     
    void dfs(int u , int par=-1 , int h=0 )
    {
    	if(h>(k/2))
    		res++ ;
    	if(k%2 == 1 && h == (k/2)+1)
    		dp[u] ++ ; 
    	
    	for(auto v : adj[u])
    	{
    		if(v == par)
    			continue ; 
    		dfs(v , u , h+1) ; 
    		dp[u] += dp[v] ; 
    	}
    }
     
    int main()
    {
    	cin >> n >> k ; 
    	for(int i=0 ; i<n-1 ; i++)
    	{
    		int u , v ; 
    		cin >> u >> v ; 
    		u-- , v-- ;
    		adj[u].push_back(v) ;
    		adj[v].push_back(u) ; 
    	}
    	
    	for(int i=0 ; i<n  ;i++)
    	{
    		dfs(i) ; 
    		if(k%2 == 1)
    		{
    			int mx = 0  ;
    			for(auto x : adj[i])
    			{
    				mx = max(mx , dp[x]) ;
    			}
    			res-=mx;
    		}
    		ans= min(ans , res) ; 
    		res = 0 ; 
    		for(int j=0 ; j<n ; j++)
    			dp[j] = 0  ; 
    	}
    	cout << ans << endl ; 
    }