#include <bits/stdc++.h>
using namespace std;
vector<string> token(string a) {
  vector<string> w;
  a.push_back(' ');
  while (!a.empty()) {
    w.push_back(a.substr(0, a.find(" ")));
    a = a.substr(a.find(" ") + 1, a.size() - 1);
  }
  return w;
}
map<string, int> mapik;
vector<string> amapik;
int dodaj(string a) {
  if (mapik.count(a) == 0) {
    mapik[a] = mapik.size() - 1;
    amapik.push_back(a);
  }
  return mapik[a];
}
char tmp_str[1000];
string scanf_string() {
  scanf("%s", tmp_str);
  return tmp_str;
}
const int N = 3200;
int n;
vector<int> sas[N];
int kol[N];
int odl[N];
int cyklik;
int znajdz_cykl(int st, int ost = -1) {
  if (kol[st] != 0) return -1;
  kol[st] = 1;
  for (int i = 0; i < sas[st].size(); i++) {
    int v = sas[st][i];
    if (ost == v) continue;
    if (kol[v] == 1) {
      kol[st] = 2;
      cyklik = v;
      return v;
    } else {
      int wynik = znajdz_cykl(v, st);
      if (wynik >= 0) {
        kol[st] = 2;
        if (st == wynik)
          return -1;
        else
          return wynik;
      }
    }
  }
  return -1;
}
void wylicz_odleglosci(int st, int akt = 0) {
  if (odl[st] != -1) return;
  odl[st] = akt;
  for (int i = 0; i < sas[st].size(); i++) {
    int v = sas[st][i];
    if (kol[v] == 2)
      wylicz_odleglosci(v, 0);
    else
      wylicz_odleglosci(v, akt + 1);
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    a--;
    b--;
    sas[a].push_back(b);
    sas[b].push_back(a);
  }
  fill(odl, odl + n, -1);
  znajdz_cykl(0);
  wylicz_odleglosci(cyklik);
  for (int i = 0; i < n; i++) {
    printf("%d ", odl[i]);
  }
  printf("\n");
  return 0;
}
