#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] << " ";
}