#include <bits/stdc++.h>
using namespace std;
int dp[2010][2010];
vector<int> g[2010];
int N, K;
int sdp[2010];
int size(int x, int d, int p, int tot[]) {
  tot[d]++;
  for (auto e : g[x]) {
    if (e == p) continue;
    size(e, d + 1, x, tot);
  }
  return 0;
}
int tmp[2010] = {};
int main() {
  memset(sdp, -1, sizeof(sdp));
  for (int i = 0; i < 2010; i++)
    for (int j = 0; j < 2010; j++) dp[i][j] = 1e9;
  cin >> N >> K;
  --K;
  assert(K >= 0);
  vector<pair<int, int> > es;
  for (int i = 0; i < N - 1; i++) {
    int a, b;
    cin >> a >> b;
    --a, --b;
    g[a].push_back(b);
    g[b].push_back(a);
    es.push_back({a, b});
  }
  int ans = 1e9;
  for (int i = 0; i < es.size(); i++) {
    int tot1[2010] = {};
    int tot2[2010] = {};
    size(es[i].first, 0, es[i].second, tot1);
    size(es[i].second, 0, es[i].first, tot2);
    for (int j = 1; j < 2010; j++) tot1[j] += tot1[j - 1];
    for (int j = 1; j < 2010; j++) tot2[j] += tot2[j - 1];
    int sub = 1e9;
    for (int k = 0; k <= K; k++) {
      sub = min(N - (tot1[k] + tot2[K - k]), sub);
    }
    ans = min(sub, ans);
  }
  cout << ans << endl;
}
