#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000005;
vector<int> edges[MAXN];
void add_edge(int from, int to) {
  edges[from].push_back(to);
  edges[to].push_back(from);
}
int n, k;
int dfs(int x, int y, int& res) {
  if (edges[x].size() == 1) return 0;
  vector<int> v;
  for (auto i : edges[x])
    if (i != y) v.push_back(dfs(i, x, res) + 1);
  sort(v.begin(), v.end(), greater<int>());
  int ret = v[0];
  for (int i = 1; i < (int)v.size(); i++) {
    if (v[i - 1] + v[i] <= k) break;
    res++;
    ret = v[i];
  }
  return ret;
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i < n; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    add_edge(u, v);
  }
  int ans = 1;
  for (int i = 1; i <= n; i++)
    if (edges[i].size() > 1) {
      dfs(i, 0, ans);
      break;
    }
  printf("%d\n", ans);
  return 0;
}
