#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<vector>
#include<stack>
#include<queue>
#include<deque>
#include<map>
#include<set>
#include<limits>
#include<climits>
#include<cmath>
#include<functional>
#include<ctime>
#include<cstdlib>
#include<fstream>
#include<typeinfo>

using namespace std;

typedef long long int ll;
typedef unsigned long long int u64;
typedef unsigned u32;

const int MAX = 1<<17;

int cnt[2],n;

vector <int> v[MAX];

bool used[MAX];

void DFS(int node, bool p)
{
    used[node]=true;
    cnt[p]++;
    int i;
    for(i=0;i<v[node].size();i++)
        if(!used[v[node][i]])
            DFS(v[node][i],p^1);
}

void input()
{
    scanf("%d", &n);
    int i,a,b;
    for(i=1;i<n;i++)
    {
        scanf("%d %d", &a, &b);
        v[a].push_back(b);
        v[b].push_back(a);
    }
}

void solve()
{
    DFS(1,0);
    printf("%d\n", min(cnt[0],cnt[1]));
}

int main()
{
    input();
    solve();
    return 0;
}
