#include <bits/stdc++.h>
using namespace std;
const int N = 3500000;
int n, k, ans, root, cnt, head[N], du[N], dis[N];
struct node {
  int next, to;
} sxd[N];
vector<int> q[N];
void add(int u, int v) {
  sxd[++cnt].next = head[u];
  sxd[cnt].to = v;
  head[u] = cnt;
}
void dfs(int at, int fa) {
  if (du[at] == 1) {
    dis[at] = 1;
    return;
  }
  for (int i = head[at]; i; i = sxd[i].next) {
    if (sxd[i].to == fa) continue;
    dfs(sxd[i].to, at);
    q[at].push_back(dis[sxd[i].to]);
  }
  sort(q[at].begin(), q[at].end());
  int now = q[at][0], pos = 1;
  for (; pos < (int)q[at].size() && now + q[at][pos] <= k;
       now = q[at][pos], ++pos)
    ;
  ans += q[at].size() - pos;
  dis[at] = now + 1;
}
signed main() {
  ios::sync_with_stdio(false);
  cin >> n >> k;
  for (int i = 1; i < n; i++) {
    int x, y;
    cin >> x >> y;
    du[x]++;
    du[y]++;
    add(x, y);
    add(y, x);
  }
  for (root = 1; root <= n; root++)
    if (du[root] > 1) break;
  dfs(root, 0);
  cout << ans + 1;
}
