#include <bits/stdc++.h>
using namespace std;
int casex, n, k;
int num, hed[200010], nex[400010], vt[400010];
long long dp[200010][10], sum[200010], ans;
int read() {
  int u = 0;
  char c = getchar();
  while (c < '0' || c > '9') c = getchar();
  while (c >= '0' && c <= '9') u = (u << 1) + (u << 3) + c - '0', c = getchar();
  return u;
}
void add(int x, int y) {
  vt[++num] = y, nex[num] = hed[x], hed[x] = num;
  vt[++num] = x, nex[num] = hed[y], hed[y] = num;
}
void dfs1(int u, int fa) {
  for (int i = hed[u]; i; i = nex[i]) {
    if (vt[i] == fa) continue;
    dfs1(vt[i], u);
    for (int j = 1; j < k; j++) dp[u][j] += dp[vt[i]][j - 1];
    sum[u] += sum[vt[i]] + dp[vt[i]][k - 1];
    dp[u][0] += dp[vt[i]][k - 1];
  }
  dp[u][0]++;
}
void dfs2(int u, int fa) {
  int tmp1 = dp[u][k - 1], tmp2 = dp[u][max(0, k - 2)];
  for (int j = k - 1; j >= 2; j--) dp[u][j] += dp[fa][j - 1] - dp[u][j - 2];
  dp[u][1] += dp[fa][0] - tmp1;
  dp[u][0] += dp[fa][k - 1] - tmp2;
  sum[u] += sum[fa] - sum[u] - tmp1 + dp[fa][k - 1] - tmp2;
  for (int i = hed[u]; i; i = nex[i]) {
    if (vt[i] == fa) continue;
    dfs2(vt[i], u);
  }
}
int main() {
  n = read(), k = read();
  for (int i = 1; i <= n - 1; i++) {
    int x = read(), y = read();
    add(x, y);
  }
  dfs1(1, 0);
  for (int i = hed[1]; i; i = nex[i]) dfs2(vt[i], 1);
  for (int i = 1; i <= n; i++) {
    ans += sum[i];
    for (int j = 1; j < k; j++) ans += dp[i][j];
  }
  printf("%lld", ans / 2);
}
