#include<bits/stdc++.h>
#define INF (1e9)
#define N 100005
using namespace std;
int n,a,b,p1,p2,u,maxd,cnt,ans[N];
bool used[N],t[N];
vector<int> e[N];

void dfs(int x,int d){
  if(used[x])return;
  used[x]=true;
  if(maxd<d)maxd=d,u=x;
  for(int i=0;i<e[x].size();i++)
    dfs(e[x][i],d+1);
}

int dfs2(int x){
  int res=false;
  if(used[x])return res;
  if(x==p2)res=true;
  used[x]=true;
  for(int i=0;i<e[x].size();i++)
    res|=dfs2(e[x][i]);
  cnt+=res;
  return t[x]=res;
}

void dfs3(int x,int d){
  if(used[x])return;
  used[x]=true;
  if(t[x])ans[x]=min(ans[x],d);
  for(int i=0;i<e[x].size();i++)
    dfs3(e[x][i],d+1);
}

void dfs4(int x,int d){
  if(used[x])return;
  used[x]=true;
  ans[x]=d;
  for(int i=0;i<e[x].size();i++)
    dfs4(e[x][i],d-1);
}

int main(){
  cin>>n;
  for(int i=0;i<n-1;i++){
    cin>>a>>b; a--, b--;
    e[a].push_back(b);
    e[b].push_back(a);
  }
  for(int i=0;i<n;i++)ans[i]=INF;
  maxd=0; dfs(0,0);  p1=u;
  memset(used,0,sizeof(used));
  maxd=0; dfs(p1,0); p2=u;
  memset(used,0,sizeof(used));
  dfs2(p1);
  memset(used,0,sizeof(used));
  dfs3(p1,2*n-cnt-1);
  memset(used,0,sizeof(used));
  dfs3(p2,2*n-cnt-1);
  memset(used,0,sizeof(used));
  for(int i=0;i<n;i++)
    if(t[i]){
      used[i]=true;
      for(int j=0;j<e[i].size();j++)
	if(!t[e[i][j]])dfs4(e[i][j],ans[i]-1);
    }
  for(int i=0;i<n;i++)
    cout<<ans[i]<<endl;
  return 0;
}