#include <bits/stdc++.h>
using namespace std;
int n, K, head[1000005], f[1000005], rd[1000005], num, st[1000005], ans;
struct node {
  int to, next;
} g[1000005 << 1];
void ins(int u, int v) {
  g[++num].next = head[u];
  head[u] = num;
  g[num].to = v;
}
void dfs(int u, int ff) {
  if (rd[u] == 1) return (void)(f[u] = 1);
  int top = 0;
  for (int i = head[u]; i; i = g[i].next)
    if (g[i].to != ff) dfs(g[i].to, u);
  for (int i = head[u]; i; i = g[i].next)
    if (g[i].to != ff) st[++top] = f[g[i].to];
  sort(st + 1, st + top + 1);
  int i;
  for (i = top; i > 1; i--)
    if (st[i] + st[i - 1] <= K)
      break;
    else
      ans++;
  f[u] = st[i] + 1;
}
int main() {
  scanf("%d%d", &n, &K);
  int x, y;
  for (int i = 1; i < n; i++)
    scanf("%d%d", &x, &y), rd[x]++, rd[y]++, ins(x, y), ins(y, x);
  for (int i = 1; i <= n; i++)
    if (rd[i] != 1) {
      dfs(i, i);
      break;
    }
  printf("%d\n", ans + 1);
}
