#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3e5+7;
int n;
vector<int> graf[MAXN];
int akt_spr; //Przekazuję z maina którą wartość aktualnie sprawdzam
bool sprawdz(int poprz, int v, int ile) {
//Potrzebuję graf[v].size()-1 ekip budowlanych ale w każdej jednostce czasowej dostaję akt_spr
//i jeszcze może coś w ile zostało do wykorzystania
ile += akt_spr - (graf[v].size() - 1);
if(v==1) ile--; //Bo korzeń nie ma ojca dlatego powinnam była tam wyżej zrobić zamiast
//- (graf[v].size()-1) po prostu - graf[v].size()
if(ile<0) return 0; //No i tutaj jak mi wychodzi ujemnie to się nie da
for(auto sasiad : graf[v]) {
if(sasiad != poprz) {
bool akt = sprawdz(v, sasiad, ile);
if(!akt) return 0;
}
}
return 1;
}
int main() {
cin >> n;
for(int i=0; i<n-1; i++) {
int a, b;
cin >> a >> b;
graf[a].push_back(b);
graf[b].push_back(a);
}
//Pomińmy fakt że działa to w O(n^2), bo dostaję WA i tak
for(int i=0; i<=n; i++) {
akt_spr = i;
if(sprawdz(0, 1, 0)) {
cout << i << "\n";
return 0;
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTUFYTiA9IDNlNSs3OwppbnQgbjsKCnZlY3RvcjxpbnQ+IGdyYWZbTUFYTl07CgppbnQgYWt0X3NwcjsgLy9Qcnpla2F6dWrEmSB6IG1haW5hIGt0w7NyxIUgd2FydG/Fm8SHIGFrdHVhbG5pZSBzcHJhd2R6YW0KCmJvb2wgc3ByYXdkeihpbnQgcG9wcnosIGludCB2LCBpbnQgaWxlKSB7CgkvL1BvdHJ6ZWJ1asSZIGdyYWZbdl0uc2l6ZSgpLTEgZWtpcCBidWRvd2xhbnljaCBhbGUgdyBrYcW8ZGVqIGplZG5vc3RjZSBjemFzb3dlaiBkb3N0YWrEmSBha3Rfc3ByCgkvL2kgamVzemN6ZSBtb8W8ZSBjb8WbIHcgaWxlIHpvc3RhxYJvIGRvIHd5a29yenlzdGFuaWEKICAgIGlsZSArPSBha3Rfc3ByIC0gKGdyYWZbdl0uc2l6ZSgpIC0gMSk7CiAgICBpZih2PT0xKSBpbGUtLTsgLy9CbyBrb3J6ZcWEIG5pZSBtYSBvamNhIGRsYXRlZ28gcG93aW5uYW0gYnnFgmEgdGFtIHd5xbxlaiB6cm9iacSHIHphbWlhc3QKICAgIC8vLSAoZ3JhZlt2XS5zaXplKCktMSkgcG8gcHJvc3R1IC0gZ3JhZlt2XS5zaXplKCkKICAgIGlmKGlsZTwwKSByZXR1cm4gMDsgLy9ObyBpIHR1dGFqIGphayBtaSB3eWNob2R6aSB1amVtbmllIHRvIHNpxJkgbmllIGRhCiAgICAKICAgIGZvcihhdXRvIHNhc2lhZCA6IGdyYWZbdl0pIHsKICAgICAgICBpZihzYXNpYWQgIT0gcG9wcnopIHsKICAgICAgICAgICAgYm9vbCBha3QgPSBzcHJhd2R6KHYsIHNhc2lhZCwgaWxlKTsKICAgICAgICAgICAgaWYoIWFrdCkgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCmludCBtYWluKCkgewoKICAgIGNpbiA+PiBuOwoKICAgIGZvcihpbnQgaT0wOyBpPG4tMTsgaSsrKSB7CiAgICAgICAgaW50IGEsIGI7CiAgICAgICAgY2luID4+IGEgPj4gYjsKICAgICAgICBncmFmW2FdLnB1c2hfYmFjayhiKTsKICAgICAgICBncmFmW2JdLnB1c2hfYmFjayhhKTsKICAgIH0KCgkvL1BvbWnFhG15IGZha3QgxbxlIGR6aWHFgmEgdG8gdyBPKG5eMiksIGJvIGRvc3RhasSZIFdBIGkgdGFrCgogICAgZm9yKGludCBpPTA7IGk8PW47IGkrKykgewogICAgICAgIGFrdF9zcHIgPSBpOwogICAgICAgIGlmKHNwcmF3ZHooMCwgMSwgMCkpIHsKICAgICAgICAgICAgY291dCA8PCBpIDw8ICJcbiI7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCgogICAgcmV0dXJuIDA7Cn0=