#include <bits/stdc++.h>
using namespace std;
bool m[3005][3005], f[3005], y[3005];
int t[3005], n, g[3005], dep = 1, x[3005], z[3005], r[3005];
bool dfs(int i) {
  int j, k;
  t[i] = 1;
  g[dep] = i;
  dep++;
  for (j = 1; j <= n; j++) {
    if (m[i][j]) {
      if (t[j] == 0) {
        r[j] = i;
        if (dfs(j)) return true;
      } else if (t[j] == 1 && r[i] != j) {
        for (k = dep - 1;; k--) {
          f[g[k]] = 1;
          if (g[k] == j) break;
        }
        return true;
      }
    }
  }
  t[i] = 2;
  dep--;
  return false;
}
int main() {
  int i, j, p, q, a, b;
  scanf("%d", &n);
  for (i = 1; i <= n; i++)
    for (j = 1; j <= n; j++) m[i][j] = 0;
  for (i = 1; i <= n; i++) {
    scanf("%d%d", &p, &q);
    m[p][q] = 1;
    m[q][p] = 1;
  }
  for (i = 1; i <= n; i++) {
    t[i] = 0;
    f[i] = 0;
    y[i] = 0;
  }
  dfs(1);
  for (i = 1; i <= n; i++) {
    if (f[i]) {
      x[i] = 0;
      y[i] = 1;
      z[1] = i;
      a = 1;
      b = 2;
      while (a != b) {
        a++;
        for (j = 1; j <= n; j++) {
          if (m[z[a - 1]][j] && y[j] == 0 && f[j] == 0) {
            y[j] = 1;
            x[j] = x[z[a - 1]] + 1;
            z[b] = j;
            b++;
          }
        }
      }
    }
  }
  for (i = 1; i <= n; i++) {
    printf("%d", x[i]);
    if (i == n)
      printf("\n");
    else
      printf(" ");
  }
  return 0;
}
