#include <bits/stdc++.h>

using namespace std;



int N , u , v;
vector<int> mat[1008];
int dist[100008];
int kraj1,kraj2, dijametar, dijametar1;



void DFS(int n, int kraj){

    for(auto x: mat[n]){
        if(dist[x] != -1 || x == kraj)
            continue;

        dist[x] = dist[n] + 1;
        DFS(x,kraj);
    }

}


int main()
{
    cin >> N;

    for(int i = 0; i < N - 1; i++){
        cin >> u >> v;
        mat[u].push_back(v);
        mat[v].push_back(u);
    }

    for(int i = 1; i <= N; i++)
        dist[i] = -1;



    if(N == 3 || N == 4){
        cout << 1;
        return 0;
    }

    dist[1] = 0;
    DFS(1, -1);
    kraj1 = 1;
    for(int i = 2; i <= N; i++){
        if(dist[kraj1] < dist[i])
            kraj1 = i;
    }

    //cout << kraj1 << endl;

    for(int i = 1; i <= N; i++)
        dist[i] = -1;

    dist[kraj1] = 0;
    DFS(kraj1, -1);

    kraj2 = 1;
    dijametar = dist[1];
    for(int i = 2; i <= N; i++){
        if(dist[kraj2] < dist[i]){
            kraj2 = i;
            dijametar = dist[i];
        }

    }
    //cout << kraj2 << endl;

    for(int i = 1; i <= N; i++)
        dist[i] = -1;


    DFS(kraj2, kraj1);

    if(kraj1 == 1)
        dijametar1 = dist[2];
    else
        dijametar1 = dist[1];
    for(int i = 2; i <= N; i++){
        if(i == kraj1)
            continue;

        if(dijametar1 < dist[i]){
            dijametar1 = dist[i];
        }

    }

    for(int i = 1; i <= N; i++)
        dist[i] = -1;

    if(dijametar1 != dijametar){
        DFS(kraj1,kraj2);

        if(kraj2 == 1)
            dijametar1 = dist[2];
        else
            dijametar1 = dist[1];

        for(int i = 2; i <= N; i++){
            if(i == kraj2)
                continue;

            if(dijametar1 < dist[i]){
                dijametar1 = dist[i];
            }

        }
        if(dijametar1 != dijametar){
            if(N % 2 == 1)
                cout << dijametar;
            else
                cout << dijametar - 1;
        }
        else
            cout << dijametar;
    }
    else{
        cout << dijametar;
    }

    return 0;
}