#include <bits/stdc++.h>
using namespace std;
const long long N = 1e5 + 10;
struct EDGE {
  long long to, nxt;
} edge[N << 1];
long long head[N << 1], tot;
long long n, a, b;
void add(long long x, long long y) {
  edge[++tot].to = y;
  edge[tot].nxt = head[x];
  head[x] = tot;
}
void into() {
  scanf("%lld", &n);
  for (long long i = 1; i < n; ++i) {
    long long x, y;
    scanf("%lld%lld", &x, &y);
    add(x, y);
    add(y, x);
  }
}
void dfs(long long x, long long fa, long long d) {
  if (d)
    a++;
  else
    b++;
  for (long long i = head[x]; i; i = edge[i].nxt) {
    long long y = edge[i].to;
    if (y == fa) continue;
    dfs(y, x, d ^ 1);
  }
}
signed main() {
  into();
  dfs(1, 0, 0);
  printf("%lld\n", a * b - n + 1);
  return 0;
}
