#include <bits/stdc++.h>
using namespace std;
long long sub[300002][2], ans = 0, n;
vector<long long> graph[300002];
void dfs(long long u, long long p) {
  long long v, j;
  sub[u][0] = 1;
  for (j = 0; j < graph[u].size(); j++) {
    v = graph[u][j];
    if (v == p) continue;
    dfs(v, u);
    sub[u][0] += sub[v][1];
    sub[u][1] += sub[v][0];
  }
}
void f(long long u, long long p) {
  long long v, j, v2, ans0 = 0, ans1 = 0;
  for (j = 0; j < graph[u].size(); j++) {
    v = graph[u][j];
    if (v == p) continue;
    f(v, u);
    ans += (sub[v][0] + sub[v][1]) * (n - sub[v][0] - sub[v][1]);
    ans += sub[v][0] * ans0 + sub[v][1] * ans1;
    ans0 += sub[v][1];
    ans1 += sub[v][0];
  }
  ans += ans1;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long i;
  cin >> n;
  for (i = 1; i < n; i++) {
    long long x, y;
    cin >> x >> y;
    graph[x].push_back(y);
    graph[y].push_back(x);
  }
  dfs(1, -1);
  f(1, -1);
  cout << ans / 2;
  return 0;
}
