#include <bits/stdc++.h>
using namespace std;
int n;
pair <int, int> g[2010];
int s[2010], fa[2010], f[2010][30];
int dep[2010];
vector <int> e[2010];
void find_fa(int x, int father)
{
fa[x] = father;
for (auto y : e[x])
if (y != father)
find_fa(y, x);
}
void find_dep(int x, int depth)
{
dep[x] = depth;
for (auto y : e[x])
if (y != fa[x])
find_dep(y, depth + 1);
}
void find_size(int x)
{
for (auto y : e[x])
if (y != fa[x])
find_size(y);
for (auto y : e[x])
if (y != fa[x])
s[x] += s[y];
s[x] += 1;
}
bool checkdot(int x, int y)
{
int dis = dep[y] - dep[x];
int cnt = 0, ts = y;
while (dis > 0)
{
if (dis % 2 == 1)
ts = f[ts][cnt];
cnt++;
dis /= 2;
}
if (ts == x)
return 1;
return 0;
}
bool checkline(int id1, int id2)
{
if (checkdot(g[id1].second, g[id2].first))
return 1;
if (checkdot(g[id2].second, g[id1].first))
return 1;
return 0;
}
int main()
{
cin >> n;
for (int i = 1; i < n; i++)
{
int x, y;
cin >> x >> y;
g[i] = {x, y};
e[x].push_back(y);
e[y].push_back(x);
}
find_fa(1, 0);
find_dep(1, 1);
find_size(1);
for (int i = 1; i <= n; i++)
if (fa[g[i].second] != g[i].first)
swap(g[i].first, g[i].second);
for (int i = 1; i <= n; i++)
f[i][0] = fa[i];
f[1][0] = 1;
for (int i = 1; i <= 20; i++)
for (int j = 1; j <= n; j++)
f[j][i] = f[f[j][i - 1]][i - 1];
int ans = 1e9;
for (int i = 1; i + 1 < n; i++)
for (int j = i + 1; j < n; j++)
{
bool flag = checkline(i, j);
if (flag == 1)
{
int X = s[g[i].second], Y = s[g[j].second];
int x = min(X, Y), y = abs(X - Y), z = n - max(X, Y);
ans = min(ans, max(max(x, y), z) - min(min(x, y), z));
// cout << x << " " << y << " " << z << endl;
}
else
{
int x = s[g[i].second], y = s[g[j].second], z = n - x - y;
ans = min(ans, max(max(x, y), z) - min(min(x, y), z));
}
// cout << ans << " " << i << " " << j << endl;
}
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuOwpwYWlyIDxpbnQsIGludD4gZ1syMDEwXTsKaW50IHNbMjAxMF0sIGZhWzIwMTBdLCBmWzIwMTBdWzMwXTsKaW50IGRlcFsyMDEwXTsKdmVjdG9yIDxpbnQ+IGVbMjAxMF07CnZvaWQgZmluZF9mYShpbnQgeCwgaW50IGZhdGhlcikKewoJZmFbeF0gPSBmYXRoZXI7Cglmb3IgKGF1dG8geSA6IGVbeF0pCgkJaWYgKHkgIT0gZmF0aGVyKQoJCQlmaW5kX2ZhKHksIHgpOwp9CnZvaWQgZmluZF9kZXAoaW50IHgsIGludCBkZXB0aCkKewoJZGVwW3hdID0gZGVwdGg7Cglmb3IgKGF1dG8geSA6IGVbeF0pCgkJaWYgKHkgIT0gZmFbeF0pCgkJCWZpbmRfZGVwKHksIGRlcHRoICsgMSk7Cn0Kdm9pZCBmaW5kX3NpemUoaW50IHgpCnsKCWZvciAoYXV0byB5IDogZVt4XSkKCQlpZiAoeSAhPSBmYVt4XSkKCQkJZmluZF9zaXplKHkpOwoJZm9yIChhdXRvIHkgOiBlW3hdKQoJCWlmICh5ICE9IGZhW3hdKQoJCQlzW3hdICs9IHNbeV07CglzW3hdICs9IDE7Cn0KYm9vbCBjaGVja2RvdChpbnQgeCwgaW50IHkpCnsKCWludCBkaXMgPSBkZXBbeV0gLSBkZXBbeF07CglpbnQgY250ID0gMCwgdHMgPSB5OwoJd2hpbGUgKGRpcyA+IDApCgl7CgkJaWYgKGRpcyAlIDIgPT0gMSkKCQkJdHMgPSBmW3RzXVtjbnRdOwoJCWNudCsrOwoJCWRpcyAvPSAyOwoJfQoJaWYgKHRzID09IHgpCgkJcmV0dXJuIDE7CglyZXR1cm4gMDsKfQpib29sIGNoZWNrbGluZShpbnQgaWQxLCBpbnQgaWQyKQp7CglpZiAoY2hlY2tkb3QoZ1tpZDFdLnNlY29uZCwgZ1tpZDJdLmZpcnN0KSkKCQlyZXR1cm4gMTsKCWlmIChjaGVja2RvdChnW2lkMl0uc2Vjb25kLCBnW2lkMV0uZmlyc3QpKQoJCXJldHVybiAxOwoJcmV0dXJuIDA7Cn0KaW50IG1haW4oKQp7CgljaW4gPj4gbjsKCWZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKQoJewoJCWludCB4LCB5OwoJCWNpbiA+PiB4ID4+IHk7CgkJZ1tpXSA9IHt4LCB5fTsKCQllW3hdLnB1c2hfYmFjayh5KTsKCQllW3ldLnB1c2hfYmFjayh4KTsKCX0KCWZpbmRfZmEoMSwgMCk7CglmaW5kX2RlcCgxLCAxKTsKCWZpbmRfc2l6ZSgxKTsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKCQlpZiAoZmFbZ1tpXS5zZWNvbmRdICE9IGdbaV0uZmlyc3QpCgkJCXN3YXAoZ1tpXS5maXJzdCwgZ1tpXS5zZWNvbmQpOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQoJCWZbaV1bMF0gPSBmYVtpXTsKCWZbMV1bMF0gPSAxOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gMjA7IGkrKykKCQlmb3IgKGludCBqID0gMTsgaiA8PSBuOyBqKyspCgkJCWZbal1baV0gPSBmW2Zbal1baSAtIDFdXVtpIC0gMV07CglpbnQgYW5zID0gMWU5OwoJZm9yIChpbnQgaSA9IDE7IGkgKyAxIDwgbjsgaSsrKQoJCWZvciAoaW50IGogPSBpICsgMTsgaiA8IG47IGorKykKCQl7CgkJCWJvb2wgZmxhZyA9IGNoZWNrbGluZShpLCBqKTsKCQkJaWYgKGZsYWcgPT0gMSkKCQkJewoJCQkJaW50IFggPSBzW2dbaV0uc2Vjb25kXSwgWSA9IHNbZ1tqXS5zZWNvbmRdOwoJCQkJaW50IHggPSBtaW4oWCwgWSksIHkgPSBhYnMoWCAtIFkpLCB6ID0gbiAtIG1heChYLCBZKTsKCQkJCWFucyA9IG1pbihhbnMsIG1heChtYXgoeCwgeSksIHopIC0gbWluKG1pbih4LCB5KSwgeikpOwoJCQkJLy8gY291dCA8PCB4IDw8ICIgIiA8PCB5IDw8ICIgIiA8PCB6IDw8IGVuZGw7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlpbnQgeCA9IHNbZ1tpXS5zZWNvbmRdLCB5ID0gc1tnW2pdLnNlY29uZF0sIHogPSBuIC0geCAtIHk7CgkJCQlhbnMgPSBtaW4oYW5zLCBtYXgobWF4KHgsIHkpLCB6KSAtIG1pbihtaW4oeCwgeSksIHopKTsKCQkJfQoJCQkvLyBjb3V0IDw8IGFucyA8PCAiICIgPDwgaSA8PCAiICIgPDwgaiA8PCBlbmRsOwoJCX0KCWNvdXQgPDwgYW5zOwoJcmV0dXJuIDA7Cn0=