#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0;
  char c = getchar();
  bool p = 1;
  for (; !isdigit(c); c = getchar())
    if (c == '-') p = 0;
  for (; isdigit(c); c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
  return p ? x : -x;
}
const int N = 1000105;
struct edge {
  int to, nt;
} e[N * 2];
int n, k, x, y, ans, cnt, head[N], rt = 1, du[N];
void add(int u, int v) {
  e[++cnt] = (edge){v, head[u]};
  head[u] = cnt;
}
int dfs(int u, int fa) {
  vector<int> v;
  int i;
  for (i = head[u]; i; i = e[i].nt)
    if (e[i].to != fa) v.push_back(dfs(e[i].to, u) + 1);
  sort(v.begin(), v.end());
  for (i = v.size() - 1; i > 0; i--)
    if (v[i] + v[i - 1] > k)
      ans++;
    else
      break;
  return v.size() == 0 ? 0 : v[i];
}
int main() {
  n = read();
  k = read();
  for (int i = 1; i < n; i++) {
    x = read();
    y = read();
    add(x, y);
    add(y, x);
    du[x]++;
    du[y]++;
    if (du[x] > 1) rt = x;
    if (du[y] > 1) rt = y;
  }
  dfs(rt, 0);
  cout << ans + 1;
  return 0;
}
