#include <bits/stdc++.h>
using namespace std;
#define task "main"
#define fi first
#define se second
#define ll long long
const int mod=1e9+7;
const int maxn=1e7+5;
const int base=311;
ll n,k;
vector<ll> g[2000000];
ll dp[200000][200];
ll ans=0;
void dfs(ll u,ll par)
{
for (int v:g[u])
{
if (v==par) continue;
dfs(v,u);
for (int i=0;i<k;i++)
{
ans += dp[u][i]*dp[v][k-i-1];
}
for (int i=1;i<=k;i++)
{
dp[u][i]+=dp[v][i-1];
}
}
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
if (fopen(task".inp","r"))
{
freopen(task".inp","r",stdin);
freopen(task".out","w",stdout);
}
cin>>n>>k;
for (int i=1;i<=n;i++) dp[i][0]=1;
for (int i=1;i<n;i++)
{
ll u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
dfs(1,0);
cout<<ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgdGFzayAibWFpbiIKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGxsIGxvbmcgbG9uZwpjb25zdCBpbnQgbW9kPTFlOSs3Owpjb25zdCBpbnQgbWF4bj0xZTcrNTsKY29uc3QgaW50IGJhc2U9MzExOwpsbCBuLGs7CnZlY3RvcjxsbD4gZ1syMDAwMDAwXTsKbGwgZHBbMjAwMDAwXVsyMDBdOwpsbCBhbnM9MDsKdm9pZCBkZnMobGwgdSxsbCBwYXIpCnsKICAgIGZvciAoaW50IHY6Z1t1XSkKICAgIHsKICAgICAgICBpZiAodj09cGFyKSBjb250aW51ZTsKICAgICAgICBkZnModix1KTsKICAgICAgICBmb3IgKGludCBpPTA7aTxrO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGFucyArPSBkcFt1XVtpXSpkcFt2XVtrLWktMV07CiAgICAgICAgfQogICAgICAgIGZvciAoaW50IGk9MTtpPD1rO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGRwW3VdW2ldKz1kcFt2XVtpLTFdOwogICAgICAgIH0gICAgICAgCiAgICB9Cn0Kc2lnbmVkIG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKICAgIGlmIChmb3Blbih0YXNrIi5pbnAiLCJyIikpCiAgICB7CiAgICAgICAgZnJlb3Blbih0YXNrIi5pbnAiLCJyIixzdGRpbik7CiAgICAgICAgZnJlb3Blbih0YXNrIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQogICAgY2luPj5uPj5rOwogICAgCiAgICBmb3IgKGludCBpPTE7aTw9bjtpKyspIGRwW2ldWzBdPTE7CiAgICBmb3IgKGludCBpPTE7aTxuO2krKykKICAgIHsKICAgICAgICBsbCB1LHY7CiAgICAgICAgY2luPj51Pj52OwogICAgICAgIGdbdV0ucHVzaF9iYWNrKHYpOwogICAgICAgIGdbdl0ucHVzaF9iYWNrKHUpOwogICAgfQogICAgZGZzKDEsMCk7CiAgICBjb3V0PDxhbnM7Cn0=