#include <bits/stdc++.h>
using namespace std;
int dfs(int p, int u, int k, vector<vector<int> >& adjust, int& ans) {
  if (adjust[u].size() == 1) return 0;
  vector<int> distance;
  for (int v : adjust[u])
    if (v != p) distance.push_back(dfs(u, v, k, adjust, ans) + 1);
  sort(distance.begin(), distance.end());
  while (distance.size() >= 2) {
    int first = distance.at(distance.size() - 1);
    int second = distance.at(distance.size() - 2);
    if (first + second <= k) break;
    distance.pop_back();
    ans = ans + 1;
  }
  return distance.back();
}
int main() {
  ios_base::sync_with_stdio(false);
  cout.tie(nullptr);
  cin.tie(nullptr);
  int n = 0, k = 0;
  for (char digit = getchar(); '0' <= digit && digit <= '9'; digit = getchar())
    n = (n << 3) + (n << 1) + (digit - '0');
  for (char digit = getchar(); '0' <= digit && digit <= '9'; digit = getchar())
    k = (k << 3) + (k << 1) + (digit - '0');
  vector<vector<int> > adjust(n + 1);
  for (int i = 0; i < n - 1; ++i) {
    int u = 0, v = 0;
    for (char digit = getchar(); '0' <= digit && digit <= '9';
         digit = getchar())
      u = (u << 3) + (u << 1) + (digit - '0');
    for (char digit = getchar(); '0' <= digit && digit <= '9';
         digit = getchar())
      v = (v << 3) + (v << 1) + (digit - '0');
    adjust[u].push_back(v);
    adjust[v].push_back(u);
  }
  int ans = 0, u = 1;
  while (adjust[u].size() == 1) ++u;
  dfs(u, u, k, adjust, ans);
  printf("%d\n", ans + 1);
  fprintf(stderr, "Esc Time: %d ms\n", clock());
  return 0;
}
