#include <bits/stdc++.h>
using namespace std;
const int maxx = 2e6;
long long read() {
  long long k;
  scanf("%lld", &k);
  return k;
}
long long n, m, x, Ans;
long long a[maxx], b[maxx];
char s[maxx];
long long id[maxx], sz[maxx];
long long lin[maxx], len;
long long Ans1, Ans2;
struct edge {
  int y, next;
} e[maxx];
void init(int x, int y) {
  e[++len].y = y;
  e[len].next = lin[x];
  lin[x] = len;
}
long long dis1[maxx], dis2[maxx];
long long dp;
long long F[3];
void dfs(int x, int f, int dp) {
  F[dp % 2]++;
  for (int i = lin[x]; i; i = e[i].next) {
    int y = e[i].y;
    if (y == f) continue;
    dfs(y, x, dp + 1);
    Ans += sz[y] * (n - sz[y]);
    sz[x] += sz[y];
  }
  sz[x]++;
  return;
}
int main() {
  n = read();
  for (int i = 1; i < n; i++) {
    int x = read();
    int y = read();
    init(x, y);
    init(y, x);
  }
  dfs(1, 0, 1);
  Ans = (Ans + F[0] * F[1] + 1) / 2;
  cout << Ans << endl;
  return 0;
}
