#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int n, d;
typedef struct Edge {
int x, y;
int next;
} E;
E e[100010] = {0};
int h[100010];
int v[100010];
void dfs(int i, int dis, int& num) {
if (v[i] == 1 || dis > d)return;
v[i] = 1;
num++;
for (int j = h[i]; j; j = e[j].next) {
if (e[j].x == i)
dfs(e[j].y, dis + 1, num);
}
return;
}
int main() {
scanf("%d %d", &n, &d);
int u, v;
for (int i = 1; i <= n - 1; i++) {
scanf("%d %d", &u,&v);
e[i].next = h[u];
e[i].x = u;
e[i].y = v;
h[u] = i;
}
int num = -1;
dfs(1, 0, num);
cout << num;
return 0;
}