#include <bits/stdc++.h>
using namespace std;
struct bkn {
  vector<int> son;
} f[200100];
long long k;
long long n, sum[200100][2], dp[200100][6][2];
void dfs(int x, int fa) {
  long long i;
  dp[x][0][0]++;
  for (i = 0; i < f[x].son.size(); i++) {
    long long y = f[x].son[i];
    if (y == fa) continue;
    dp[y][1][0] = dp[x][k][0] + dp[x][k][1];
    sum[y][0] = sum[x][0] + sum[x][1] + 1 + dp[x][k][1] + dp[x][k][0];
    for (int j = 0; j <= k - 1; j++) {
      dp[y][j + 1][0] += dp[x][j][1] + dp[x][j][0];
    }
    dfs(y, x);
    sum[x][1] += dp[y][k][1] + sum[y][1] + 1;
    dp[x][1][1] += dp[y][k][1];
    for (int j = 0; j <= k - 1; j++) {
      dp[x][j + 1][1] += dp[y][j][1];
    }
  }
  dp[x][0][1]++;
}
int main() {
  int x, y, i, j;
  while (cin >> n >> k) {
    memset(dp, 0, sizeof(dp));
    memset(sum, 0, sizeof(sum));
    for (i = 1; i <= n - 1; i++) {
      cin >> x >> y;
      f[x].son.push_back(y);
      f[y].son.push_back(x);
    }
    dfs(1, 0);
    long long pp = 0;
    for (i = 1; i <= n; i++) {
      pp += sum[i][0];
    }
    cout << pp << endl;
  }
}
