#include <bits/stdc++.h>
using namespace std;
struct node {
  int n;
  node* next;
  node() {
    n = 0;
    next = NULL;
  }
};
node* a[1000002];
int n, k, rt, ans, s[1000002], d[1000002];
void add(int x, int y) {
  node* p = new node;
  p->n = y;
  if (a[x] != NULL) p->next = a[x];
  a[x] = p;
}
void dfs(int u, int fa) {
  int v;
  for (node* p = a[u]; p != NULL; p = p->next) {
    v = p->n;
    if (v != fa) {
      dfs(v, u);
      if (!s[u]) {
        s[u] = s[v];
        continue;
      }
      if (s[v] + s[u] <= k)
        s[u] = max(s[u], s[v]);
      else
        ans += 1, s[u] = min(s[u], s[v]);
    }
  }
  s[u] += 1;
}
int main() {
  int x, y;
  scanf("%d%d\n", &n, &k);
  for (int i = 1; i < n; ++i) {
    scanf("%d%d\n", &x, &y);
    d[x]++;
    d[y]++;
    add(x, y), add(y, x);
    if (d[x] > 1) rt = x;
    if (d[y] > 1) rt = y;
  }
  dfs(rt, -1);
  printf("%d", ans + 1);
  return 0;
}
