#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<fstream>
#include<map>
#include<ctime>
#include<set>
#include<queue>
#include<cmath>
#include<vector>
#include<bitset>
#include<functional>
#define x first
#define y second
#define mp make_pair
#define pb push_back
#define REP(i,l,r) for((i)=(l);(i)<=(r);++(i))
#define REP2(i,l,r) for((i)=(l);(i)!=(r);++(i))
using namespace std;
typedef long long LL;
typedef double ld;
const int MAX=600000+10;
int N;
int begin[MAX],next[MAX],t[MAX],tot;
int q[MAX],hash[MAX];
void add(int a,int b)
{
t[++tot]=b;
next[tot]=begin[a];
begin[a]=tot;
}
int f[MAX];
int check(int k)
{
int i,j;
for(i=N-1;i>=0;--i)
{
int u=q[i],sum=0;
for(j=begin[u];j;j=next[j])
{
int v=t[j];
if(hash[v]!=u)
continue;
++sum;
sum+=f[v];
}
sum-=min(sum,k);
f[u]=sum;
}
return f[1]==0;
}
int main()
{
int i;
scanf("%d",&N);
REP(i,1,N-1)
{
int a,b;
scanf("%d%d",&a,&b);
add(a,b);
add(b,a);
}
int head=0,end=0;
q[end++]=1;
hash[1]=-1;
while(head<end)
{
int u=q[head++];
for(i=begin[u];i;i=next[i])
{
int v=t[i];
if(!hash[v])
{
q[end++]=v;
hash[v]=u;
}
}
}
int left=0,right=N;
while(left<right)
{
int mid=(left+right)/2;
if(check(mid))
right=mid;
else left=mid+1;
}
printf("%d\n",left);
return 0;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxjc3RkbGliPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTxmc3RyZWFtPgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPGN0aW1lPgojaW5jbHVkZTxzZXQ+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxiaXRzZXQ+CiNpbmNsdWRlPGZ1bmN0aW9uYWw+CiNkZWZpbmUgeCBmaXJzdAojZGVmaW5lIHkgc2Vjb25kCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgUkVQKGksbCxyKSBmb3IoKGkpPShsKTsoaSk8PShyKTsrKyhpKSkKI2RlZmluZSBSRVAyKGksbCxyKSBmb3IoKGkpPShsKTsoaSkhPShyKTsrKyhpKSkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIExMOwp0eXBlZGVmIGRvdWJsZSBsZDsKCgpjb25zdCBpbnQgTUFYPTYwMDAwMCsxMDsKCmludCBOOwppbnQgYmVnaW5bTUFYXSxuZXh0W01BWF0sdFtNQVhdLHRvdDsKaW50IHFbTUFYXSxoYXNoW01BWF07Cgp2b2lkIGFkZChpbnQgYSxpbnQgYikKewoJdFsrK3RvdF09YjsKCW5leHRbdG90XT1iZWdpblthXTsKCWJlZ2luW2FdPXRvdDsKfQoKaW50IGZbTUFYXTsKCmludCBjaGVjayhpbnQgaykKewoJaW50IGksajsKCWZvcihpPU4tMTtpPj0wOy0taSkKCXsKCQlpbnQgdT1xW2ldLHN1bT0wOwoJCWZvcihqPWJlZ2luW3VdO2o7aj1uZXh0W2pdKQoJCXsKCQkJaW50IHY9dFtqXTsKCQkJaWYoaGFzaFt2XSE9dSkKCQkJCWNvbnRpbnVlOwoJCQkrK3N1bTsKCQkJc3VtKz1mW3ZdOwoJCX0KCQlzdW0tPW1pbihzdW0sayk7CgkJZlt1XT1zdW07Cgl9CglyZXR1cm4gZlsxXT09MDsKfQoKaW50IG1haW4oKQp7CglpbnQgaTsKCXNjYW5mKCIlZCIsJk4pOwoJUkVQKGksMSxOLTEpCgl7CgkJaW50IGEsYjsKCQlzY2FuZigiJWQlZCIsJmEsJmIpOwoJCWFkZChhLGIpOwoJCWFkZChiLGEpOwoJfQoJaW50IGhlYWQ9MCxlbmQ9MDsKCXFbZW5kKytdPTE7CgloYXNoWzFdPS0xOwoJd2hpbGUoaGVhZDxlbmQpCgl7CgkJaW50IHU9cVtoZWFkKytdOwoJCWZvcihpPWJlZ2luW3VdO2k7aT1uZXh0W2ldKQoJCXsKCQkJaW50IHY9dFtpXTsKCQkJaWYoIWhhc2hbdl0pCgkJCXsKCQkJCXFbZW5kKytdPXY7CgkJCQloYXNoW3ZdPXU7CgkJCX0KCQl9Cgl9CglpbnQgbGVmdD0wLHJpZ2h0PU47Cgl3aGlsZShsZWZ0PHJpZ2h0KQoJewoJCWludCBtaWQ9KGxlZnQrcmlnaHQpLzI7CgkJaWYoY2hlY2sobWlkKSkKCQkJcmlnaHQ9bWlkOwoJCWVsc2UgbGVmdD1taWQrMTsKCX0KCXByaW50ZigiJWRcbiIsbGVmdCk7CglyZXR1cm4gMDsKfQo=