import Queue N = input() rinsetsu = [[] for i in xrange(N)] rinsetsu_inv = [[] for i in xrange(N)] for _ in xrange(N-1): a, b = map(int, raw_input().split()) rinsetsu[a-1].append(b-1) rinsetsu_inv[b-1].append(a-1) leaves = [i for i in xrange(N) if len(rinsetsu[i]) == 0] ans = [float('inf') for i in xrange(N)] def bfs(start, inv): r = rinsetsu_inv if inv else rinsetsu q = Queue.Queue() q.put((start, 0)) while not q.empty(): node, depth = q.get() ans[node] = min(ans[node], depth) for nn in r[node]: q.put((nn, depth+1)) bfs(0, False) for leaf in leaves: bfs(leaf, True) for a in ans: print a