#include<iostream>
#include<queue>
#include<vector>
using namespace std;
vector<int> Adj[3001];
int Visited[3001], Ans[3001];
int DFS(int Now, int Parent)
{
if (Visited[Now]) return Now;
Visited[Now] = 1;
for (int Next : Adj[Now])
{
if (Next == Parent) continue;
int Result = DFS(Next, Now);
if (Result == -1) continue;
if (Result == Now) return 0;
return Visited[Now] = Result;
}
Visited[Now] = 0;
return -1;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
int n; cin >> n;
for (int i = 0; i < n; i++)
{
int a, b; cin >> a >> b;
Adj[a].push_back(b);
Adj[b].push_back(a);
}
DFS(1, -1);
queue<int> q;
for (int i = 1; i <= n; i++) {
if (Visited[i])
q.push(i);
}
while (!q.empty()) {
int Now = q.front();
q.pop();
for (int Next : Adj[Now]) {
if (Visited[Next]) continue;
Visited[Next] = 1;
Ans[Next] = Ans[Now] + 1;
q.push(Next);
}
}
for (int i = 1; i <= n; i++) cout << Ans[i] << " ";
}