#include<bits/stdc++.h>
using namespace std;

const int N=100100;
int n,ans;
vector<int>g[N];

int dfs(int x,int fa=-1){
	int ret=0,res=0;
	for(int i:g[x])if(i!=fa){
		int u=dfs(i,x);
		res|=ret&u;ret|=u;
	}
	int now=(res?32-__builtin_clz(res):0);
	now+=__builtin_ctz((ret>>now)+1);
	ans=max(ans,now);ret&=~((1<<now)-1);
	ret|=1<<now;return ret;
}

int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<n;++i){
		int x,y;cin>>x>>y;
		g[x].push_back(y);g[y].push_back(x);
	}
	dfs(1);
	cout<<ans<<'\n';
	return 0;
}
