#include<bits/stdc++.h>
using namespace std;
#define RI register int
int read() {
	int q=0;char ch=' ';
	while(ch<'0'||ch>'9') ch=getchar();
	while(ch>='0'&&ch<='9') q=q*10+ch-'0',ch=getchar();
	return q;
}
const int N=100005;
int n,tot,ans;
int h[N],ne[N<<1],to[N<<1],f[N][22];
void add(int x,int y) {to[++tot]=y,ne[tot]=h[x],h[x]=tot;}
void dfs(int x,int las) {
	for(RI i=h[x];i;i=ne[i]) {
		if(to[i]==las) continue;
		dfs(to[i],x);
		for(RI j=0;j<=20;++j) f[x][j]+=f[to[i]][j];
	}
	int p=0;
	for(RI i=20;i>=0;--i) if(f[x][i]>=2) {p=i+1;break;}
	while(f[x][p]) ++p;
	++f[x][p];for(RI i=0;i<p;++i) f[x][i]=0;
	ans=max(ans,p);
}
int main()
{
	int x,y;
	n=read();
	for(RI i=1;i<n;++i) x=read(),y=read(),add(x,y),add(y,x);
	dfs(1,0),printf("%d\n",ans);
	return 0;
}