#include <bits/stdc++.h>

/*
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
*/
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define rep(i,l,r) for (int i=l;i<=r;i++)
#define fi first
#define se second
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define ll long long
#define ull unsigned long long
#define mod 1000000007
#define nul(x) memset((x),0,sizeof((x)))
#define random_jbt mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

using namespace std;

int n;
vector<int>v[100100];
int d[100100],cnt[100100];
vector<int>q;

void dfs(int s,int p){
    d[s]=1;
    for (auto i:v[s]){
        if (i==p)continue;
        dfs(i,s);
        d[s]+=d[i];
    }
}
int getcen(int s,int p){
    for (auto i:v[s]){
        if (i==p)continue;
        if (d[i] > n/2)return getcen(i,s);
    }
    return s;
}
void fulla_gang(int s,int p,int k){
    cnt[k]++;
    for (auto i:v[s]){
        if (i==p)continue;
        fulla_gang(i,s,k+1);
    }
}

bool calc(int s,int p,int k){
    bool ok=false;
    if (k==q[0])cnt[s]=1;
    else cnt[s]=0;

    for (auto i:v[s]){
        if (i==p)continue;
        calc(i,s,k+1);

        if (p==-1){
            if (cnt[i]>1)ok=true;
        }
        cnt[s]+=cnt[i];
    }

    return ok;
}

int main(){
    ios;
    nul(d);
    nul(cnt);

    cin>>n;
    for (int i=1;i<=n-1;i++){
        int a,b;
        cin>>a>>b;
        v[a].pb(b);
        v[b].pb(a);
    }

    dfs(1,-1);
    int s = getcen(1,-1);

    fulla_gang(s,-1,0);
    cnt[0]=0;

    int j=1,ans=n-1;

    for (int i=1;i<=n;i++){
        while(cnt[i]>0){
            if (j==0){
                q.pb(i);
            }
            j=1-j;
            cnt[i]--;
        }
    }
    if (q.size()==1)q.pb(0);

    sort(rall(q));
    if (q[0]!=q[1]){
        cout<<q[0]+q[1]<<"\n";
        return 0;
    }
    reverse(all(q));

    ans=2*q[0];
    nul(cnt);
    if (calc(s,-1,0))ans=q[0];

    cout<<ans;
    return 0;
}
/*
8
1 2
2 3
3 4
4 5
5 6
6 7
7 8
*/