#include <bits/stdc++.h>

using namespace std;

typedef vector<int> vi;
typedef vector<vi> vvi;

int main()
{ ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int i, k, n, val, tmp, x, y, maxa, broj, par, gub, bar, red;
  cin>> n;
  par=n%2;
  vvi mata(n+1);
  vvi grana(n+1, vi(2));
  for(i=0; i<=n; i++) mata[i]=vi(i+1, n);
  for(i=1; i<n; i++)
  { cin>>x>>y;
    if(x<y){tmp=x; x=y; y=tmp;}
    { mata[x][y]=1;
      grana[i][0]=x; grana[i][1]=y;
    }
  }
  for(i=1; i<n; i++)
  { x=grana[i][0]; y=grana[i][1];
    for(k=x+1; k<=n; k++)
      if(mata[k][x]<n)
        if(mata[k][y]==n)mata[k][y]=mata[k][x]+1;
    for(k=x-1; k>=1; k--)
      if(mata[x][k]<n)
         if(k>y){if(mata[k][y]==n)mata[k][y]=mata[x][k]+1;}
         else{if(mata[y][k]==n)mata[y][k]=mata[x][k]+1;}
    for(k=y+1; k<=n; k++)
      if(mata[k][y]<n)
         if(k>x){if(mata[k][x]==n)mata[k][x]=mata[k][y]+1;}
         else{if(mata[x][k]==n)mata[x][k]=mata[k][y]+1;}
    for(k=y-1; k>=1; k--)
      if(mata[y][k]<n)
       if(mata[x][k]==n)mata[x][k]=mata[y][k]+1;
  }
  for(i=1; i<n; i++)
  { x=grana[i][0]; y=grana[i][1];
    for(k=x+1; k<=n; k++)
      if(mata[k][x]<n)
        if(mata[k][y]==n)mata[k][y]=mata[k][x]+1;
    for(k=x-1; k>=1; k--)
      if(mata[x][k]<n)
         if(k>y){if(mata[k][y]==n)mata[k][y]=mata[x][k]+1;}
         else{if(mata[y][k]==n)mata[y][k]=mata[x][k]+1;}
    for(k=y+1; k<=n; k++)
      if(mata[k][y]<n)
         if(k>x){if(mata[k][x]==n)mata[k][x]=mata[k][y]+1;}
         else{if(mata[x][k]==n)mata[x][k]=mata[k][y]+1;}
    for(k=y-1; k>=1; k--)
      if(mata[y][k]<n)
       if(mata[x][k]==n)mata[x][k]=mata[y][k]+1;
  }
  maxa=1; broj=1;
  for(i=1; i<=n; i++)
    for(k=1; k<=i-1; k++)
    { val=mata[i][k];
      if(val>maxa){maxa=val; broj=1;}
      else if(val==maxa)broj++;
    }
  if(broj==1)
  { if(par==0)
    { maxa--;
      bar=0;
      for(i=1; i<=n; i++)
      { red=0;
        for(k=1; k<=i-1; k++)
          if(mata[i][k]==maxa)red++;
        for(k=i+1; k<=n; k++)
          if(mata[k][i]==maxa)red++;
        if(red>1)bar++;
        if(bar>1){i=n+1; break;}
      }
      if(bar>1)cout<< maxa;
      else cout<< maxa-1;
    }
    else cout<< maxa-1;
  }
  else
  { bar=0;
    for(i=1; i<=n; i++)
    { red=0;
      for(k=1; k<=i-1; k++)
        if(mata[i][k]==maxa)red++;
      for(k=i+1;k<=n;k++)
        if(mata[k][i]==maxa)red++;
      if(red>1)bar++;
      if(bar>3){i=n+1; break;}
    }
    if(bar>3)gub=0;
    else gub=1-par;
    cout<< maxa-gub;
  }

  return 0;
}