#include <bits/stdc++.h>
//#ifndef ONLINE_JUDGE
//    #include "/home/lochness/Documents/lochness.h"
//#endif
using namespace std;
#define pii             pair< int , int >
#define inf             1000000011
#define in(a)           scanf("%d", &a)
#define ins(a)          scanf("%s", a)
#define in2(a, b)       scanf("%d%d", &a, &b)
#define in3(a, b, c)    scanf("%d%d%d", &a, &b, &c)
#define pn              printf("\n")
#define pr(a)           printf("%d\n", a)
#define prs(a)          printf("%d ", a)
#define pr2(a, b)       printf("%d %d\n", a, b)
#define pr3(a, b, c)    printf("%d %d %d\n", a, b, c)
#define pcs(a)          printf("Case %d: ", a)
#define mp              make_pair
#define vi              vector< int >
#define _ceil(n, a)     ((n)%(a)==0?((n)/(a)):((n)/(a)+1))
#define pb              push_back
#define mem(a, b)       memset(a, b, sizeof(a))
#define all(X)          X.begin(), X.end()
#define lg2(n)          (31-__builtin_clz(n))
#define ext(a)          {printf("%s\n", a); return 0;}
#define oka(x, y)       ((x)>=0&&(x)<row&&(y)>=0&&(y)<col)
#define x               first
#define y               second
#define lc              (2*i)
#define rc              (2*i+1)
#define mod             1000000007
#define M               400010

typedef long long LL;
//int  dx[]={1,0,-1,0};int dy[]={0,1,0,-1}; //4 Direction
//int  dx[]={1,1,0,-1,-1,-1,0,1,0};int dy[]={0,1,1,1,0,-1,-1,-1,0};//8 direction
//int  dx[]={2,1,-1,-2,-2,-1,1,2};int dy[]={1,2,2,1,-1,-2,-2,-1};//Knight Direction
//bool check(int n, int pos) {return (n & (1<<pos))>>pos;} //typecast 1 in case of int
//int  on(int n, int pos) {return n | (1<<pos);} //typecast 1 in case of int
//int  off(int n, int pos) {return n & ~(1<<pos);} //typecast 1 in case of int
//bool operator < (const data &d) const{return cost<d.cost;} //reverse in priority queue

vi A[M];
int deg[M];
int vis[M];
int accnt[M];
int cnt[M];
queue < int > q;

int main()
{
//#ifndef ONLINE_JUDGE
//    freopen("/home/lochness/Documents/in.txt", "r", stdin);
////    freopen("/home/lochness/Documents/out.txt", "w", stdout);
//#endif
    ios_base::sync_with_stdio(false);

    int n, i, j, k;
    int leaf = 0;

    in(n);
    for (k = 1; k < n; k++) {
        in2(i, j);
        A[i].pb(j);
        A[j].pb(i);
        deg[i]++;
        deg[j]++;
    }

    if (n == 1) {
        pr(1);
        return 0;
    }

    int ans = 0;

    for (i = 0; i < n; i++) if (deg[i] == 1) q.push(i);

    int c = 0;
    while (true) {
        vi nxt;
        c += q.size();
        if (c == n && q.size() == 2) {
            int u = q.front(); q.pop();
            int v = q.front(); q.pop();
            if (vis[u] == 0 || vis[v] == 0) ans++;
            break;
        }
        while (!q.empty()) {
            int u = q.front();
            q.pop();

            for (int v : A[u]) {
                deg[v]--;
                accnt[v] += (vis[u] == 0);
                if (vis[u] == 1) vis[v] = 1;
                if (deg[v] == 1) nxt.pb(v);
            }
        }
        if (nxt.size() == 0) break;
        for (int u : nxt) {
            if (accnt[u] > 1) ans += (accnt[u]-1), vis[u] = 1;
            q.push(u);
        }
    }

    pr(ans);



    return 0;
}


Measured memory_bytes: 18304