#include <bits/stdc++.h>
using namespace std;
int N, K, ans;
vector<int> ady[1000005];
set<int> dfs(int x, int p) {
  set<int> s;
  if (ady[x].size() == 1) {
    s.insert(0);
    return s;
  }
  for (auto v : ady[x]) {
    if (v == p) continue;
    set<int> tmp = dfs(v, x);
    for (auto aux : tmp) {
      aux++;
      if (aux > K)
        ans++;
      else if (s.find(aux) != s.end() && aux + aux > K)
        ans++;
      else
        s.insert(aux);
    }
  }
  auto it = s.begin();
  while (s.begin() != s.end()) {
    auto it2 = it;
    it2++;
    if (it2 == s.end()) break;
    if (*it + *it2 <= K) s.erase(it);
    it = it2;
  }
  return s;
}
int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(0);
  cin >> N >> K;
  for (int i = 1; i < N; i++) {
    int u, v;
    cin >> u >> v;
    ady[u].push_back(v);
    ady[v].push_back(u);
  }
  int root = 1;
  while (ady[root].size() == 1) root++;
  ans += dfs(root, 0).size();
  cout << ans;
  return 0;
}
