#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const double PI = acos(-1.0);
const int N = 1e6 + 6;
vector<int> g[N];
int n, k;
int ans;
bool vis[N];
int go(int at) {
  vis[at] = 1;
  if (g[at].size() == 1) {
    ans++;
    return 0;
  }
  vector<int> v;
  for (auto next : g[at])
    if (!vis[next]) v.push_back(go(next) + 1);
  sort(v.begin(), v.end());
  for (int i = 1; i < (int)v.size(); i++)
    if (v[i] + v[i - 1] <= k)
      ans--;
    else
      return v[i - 1];
  return *v.rbegin();
}
int main(void) {
  scanf("%d %d", &n, &k);
  for (int i = 0; i < n - 1; i++) {
    int a, b;
    scanf("%d %d", &a, &b);
    g[a].push_back(b);
    g[b].push_back(a);
  }
  for (int i = 1; i <= n; i++) {
    if (g[i].size() > 1) {
      go(i);
      break;
    }
  }
  printf("%d\n", ans);
  return 0;
}
