#include <bits/stdc++.h>
using namespace std;
long long ans;
long long num[2][200010], sz[2][200010];
vector<int> edge[200010];
void dfs1(int u, int r) {
  num[0][u] = num[1][u] = sz[1][u] = 0;
  sz[0][u] = 1;
  for (auto v : edge[u]) {
    if (v == r) continue;
    dfs1(v, u);
    num[0][u] += num[1][v];
    num[1][u] += num[0][v] + sz[0][v];
    sz[0][u] += sz[1][v];
    sz[1][u] += sz[0][v];
  }
}
void dfs2(int u, int r) {
  ans += num[0][u] + num[1][u];
  for (auto v : edge[u]) {
    if (v == r) continue;
    num[0][v] += num[1][u] - num[0][v] - sz[0][v];
    num[1][v] += num[0][u] - num[1][v] + sz[0][u] - sz[1][v];
    sz[0][v] += sz[1][u] - sz[0][v];
    sz[1][v] += sz[0][u] - sz[1][v];
    dfs2(v, u);
  }
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1, u, v; i < n; i++) {
    scanf("%d%d", &u, &v);
    edge[u].push_back(v);
    edge[v].push_back(u);
  }
  ans = 0;
  dfs1(1, 1);
  dfs2(1, 1);
  printf("%lld\n", ans >> 1);
}
