#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 1e6 + 5;
long long n;
vector<long long> a[MaxN];
bool visited[MaxN];
long long depth[MaxN];
void input()
{
cin >> n;
for (long long i = 1; i <= n - 1; i++)
{
long long u, v;
cin >> u >> v;
a[u].push_back(v);
a[v].push_back(u);
}
}
void dfs(long long s)
{
stack<long long> st;
st.push(s);
visited[s] = true;
depth[s] = 0;
while (!st.empty())
{
long long u = st.top();
st.pop();
for (long long v : a[u])
{
if (!visited[v])
{
visited[v] = true;
depth[v] = depth[u] + 1;
st.push(v);
}
}
}
}
void solve()
{
dfs(1);
for (long long i = 1; i <= n; i++)
{
cout << depth[i] << " ";
}
}
int main()
{
input();
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBNYXhOID0gMWU2ICsgNTsKCmxvbmcgbG9uZyBuOwp2ZWN0b3I8bG9uZyBsb25nPiBhW01heE5dOwpib29sIHZpc2l0ZWRbTWF4Tl07CmxvbmcgbG9uZyBkZXB0aFtNYXhOXTsKCnZvaWQgaW5wdXQoKQp7CiAgICBjaW4gPj4gbjsKCiAgICBmb3IgKGxvbmcgbG9uZyBpID0gMTsgaSA8PSBuIC0gMTsgaSsrKQogICAgewogICAgICAgIGxvbmcgbG9uZyB1LCB2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CgogICAgICAgIGFbdV0ucHVzaF9iYWNrKHYpOwogICAgICAgIGFbdl0ucHVzaF9iYWNrKHUpOwogICAgfQp9Cgp2b2lkIGRmcyhsb25nIGxvbmcgcykKewogICAgc3RhY2s8bG9uZyBsb25nPiBzdDsKCiAgICBzdC5wdXNoKHMpOwogICAgdmlzaXRlZFtzXSA9IHRydWU7CiAgICBkZXB0aFtzXSA9IDA7CgogICAgd2hpbGUgKCFzdC5lbXB0eSgpKQogICAgewogICAgICAgIGxvbmcgbG9uZyB1ID0gc3QudG9wKCk7CiAgICAgICAgc3QucG9wKCk7CgogICAgICAgIGZvciAobG9uZyBsb25nIHYgOiBhW3VdKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCF2aXNpdGVkW3ZdKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2aXNpdGVkW3ZdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGRlcHRoW3ZdID0gZGVwdGhbdV0gKyAxOwogICAgICAgICAgICAgICAgc3QucHVzaCh2KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdm9pZCBzb2x2ZSgpCnsKICAgIGRmcygxKTsKCiAgICBmb3IgKGxvbmcgbG9uZyBpID0gMTsgaSA8PSBuOyBpKyspCiAgICB7CiAgICAgICAgY291dCA8PCBkZXB0aFtpXSA8PCAiICI7CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgaW5wdXQoKTsKICAgIHNvbHZlKCk7Cn0=