#include <bits/stdc++.h>
using namespace std;
constexpr int maxn = 2 * 50 + 5;
constexpr int inf = 1e6;
vector<int> adj[maxn];
int mat[maxn][maxn];
int a[maxn], b[maxn];
inline void Clean() {
for (int i = 0; i < maxn; ++i) {
adj[i].clear();
for (int j = 0; j < maxn; ++j) {
mat[i][j] = 0;
}
}
}
inline void AddEdge(int u, int v, int c) {
adj[u].push_back(v);
adj[v].push_back(u);
mat[u][v] = c;
mat[v][u] = 0;
}
bool Bfs(int s, int t, vector<int>& bfr) {
queue<int> q;
q.push(s);
fill(bfr.begin(), bfr.end(), -1);
while (!q.empty()) {
int u = q.front();
q.pop();
if (u == t) {
return true;
}
for (int v : adj[u]) {
if (bfr[v] == -1 && mat[u][v] > 0) {
q.push(v);
bfr[v] = u;
}
}
}
return false;
}
int MaxFlow(int s, int t) {
int ans = 0;
vector<int> bfr(maxn);
while (Bfs(s, t, bfr)) {
int cur_flow = inf, cur_node = t;
int cnt = 0;
while (cur_node != s) {
cur_flow = min(cur_flow, mat[bfr[cur_node]][cur_node]);
cur_node = bfr[cur_node];
}
cur_node = t;
while (cur_node != s) {
mat[bfr[cur_node]][cur_node] -= cur_flow;
mat[cur_node][bfr[cur_node]] += cur_flow;
cur_node = bfr[cur_node];
}
ans += cur_flow;
}
return ans;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, cnt, ans = 0;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> a[i] >> b[i];
--a[i];
--b[i];
}
int s = 2 * n, t = s + 1;
for (int i = 0; i < n; ++i) {
cnt = 0;
Clean();
for (int j = 0; j < n; ++j) {
if (i == j) {
continue;
}
if (a[j] == i || b[j] == i) {
++cnt;
}
}
if (cnt <= 1) {
++ans;
continue;
}
// cout << "n: " << n << ", cnt: " << cnt << '\n';
for (int j = 0; j < n; ++j) {
if (i == j) {
continue;
}
AddEdge(s, j, 1);
if (a[j] != i && b[j] != i) {
AddEdge(j, n + a[j], 1);
AddEdge(j, n + b[j], 1);
}
int wj = cnt - 1;
if (a[i] == j || b[i] == j) {
--wj;
}
AddEdge(n + j, t, wj);
}
if (MaxFlow(s, t) < (n - cnt - 1)) {
++ans;
}
}
cout << ans << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3RleHByIGludCBtYXhuID0gMiAqIDUwICsgNTsKY29uc3RleHByIGludCBpbmYgPSAxZTY7CnZlY3RvcjxpbnQ+IGFkalttYXhuXTsKaW50IG1hdFttYXhuXVttYXhuXTsKaW50IGFbbWF4bl0sIGJbbWF4bl07CgppbmxpbmUgdm9pZCBDbGVhbigpIHsKICBmb3IgKGludCBpID0gMDsgaSA8IG1heG47ICsraSkgewogICAgYWRqW2ldLmNsZWFyKCk7CiAgICBmb3IgKGludCBqID0gMDsgaiA8IG1heG47ICsraikgewogICAgICBtYXRbaV1bal0gPSAwOwogICAgfQogIH0KfQoKaW5saW5lIHZvaWQgQWRkRWRnZShpbnQgdSwgaW50IHYsIGludCBjKSB7CiAgYWRqW3VdLnB1c2hfYmFjayh2KTsKICBhZGpbdl0ucHVzaF9iYWNrKHUpOwogIG1hdFt1XVt2XSA9IGM7CiAgbWF0W3ZdW3VdID0gMDsKfQoKYm9vbCBCZnMoaW50IHMsIGludCB0LCB2ZWN0b3I8aW50PiYgYmZyKSB7CiAgcXVldWU8aW50PiBxOwogIHEucHVzaChzKTsKICBmaWxsKGJmci5iZWdpbigpLCBiZnIuZW5kKCksIC0xKTsKCiAgd2hpbGUgKCFxLmVtcHR5KCkpIHsKICAgIGludCB1ID0gcS5mcm9udCgpOwogICAgcS5wb3AoKTsKCiAgICBpZiAodSA9PSB0KSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgZm9yIChpbnQgdiA6IGFkalt1XSkgewogICAgICBpZiAoYmZyW3ZdID09IC0xICYmIG1hdFt1XVt2XSA+IDApIHsKICAgICAgICBxLnB1c2godik7CiAgICAgICAgYmZyW3ZdID0gdTsKICAgICAgfQogICAgfQogIH0KICByZXR1cm4gZmFsc2U7Cn0KCmludCBNYXhGbG93KGludCBzLCBpbnQgdCkgewogIGludCBhbnMgPSAwOwogIHZlY3RvcjxpbnQ+IGJmcihtYXhuKTsKICB3aGlsZSAoQmZzKHMsIHQsIGJmcikpIHsKICAgIGludCBjdXJfZmxvdyA9IGluZiwgY3VyX25vZGUgPSB0OwogICAgaW50IGNudCA9IDA7CiAgICB3aGlsZSAoY3VyX25vZGUgIT0gcykgewogICAgICBjdXJfZmxvdyA9IG1pbihjdXJfZmxvdywgbWF0W2JmcltjdXJfbm9kZV1dW2N1cl9ub2RlXSk7CiAgICAgIGN1cl9ub2RlID0gYmZyW2N1cl9ub2RlXTsKICAgIH0KICAgIGN1cl9ub2RlID0gdDsKICAgIHdoaWxlIChjdXJfbm9kZSAhPSBzKSB7CiAgICAgIG1hdFtiZnJbY3VyX25vZGVdXVtjdXJfbm9kZV0gLT0gY3VyX2Zsb3c7CiAgICAgIG1hdFtjdXJfbm9kZV1bYmZyW2N1cl9ub2RlXV0gKz0gY3VyX2Zsb3c7CiAgICAgIGN1cl9ub2RlID0gYmZyW2N1cl9ub2RlXTsKICAgIH0KICAgIGFucyArPSBjdXJfZmxvdzsKICB9CiAgcmV0dXJuIGFuczsKfQoKaW50IG1haW4oKSB7CiAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICBjaW4udGllKDApOwoKICBpbnQgbiwgY250LCBhbnMgPSAwOwogIGNpbiA+PiBuOwogIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICBjaW4gPj4gYVtpXSA+PiBiW2ldOwogICAgLS1hW2ldOwogICAgLS1iW2ldOwogIH0KICBpbnQgcyA9IDIgKiBuLCB0ID0gcyArIDE7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgIGNudCA9IDA7CiAgICBDbGVhbigpOwogICAgZm9yIChpbnQgaiA9IDA7IGogPCBuOyArK2opIHsKICAgICAgaWYgKGkgPT0gaikgewogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGlmIChhW2pdID09IGkgfHwgYltqXSA9PSBpKSB7CiAgICAgICAgKytjbnQ7CiAgICAgIH0KICAgIH0KICAgIGlmIChjbnQgPD0gMSkgewogICAgCSsrYW5zOwogICAgCWNvbnRpbnVlOwogICAgfQogICAgLy8gY291dCA8PCAibjogIiA8PCBuIDw8ICIsIGNudDogIiA8PCBjbnQgPDwgJ1xuJzsKICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgKytqKSB7CiAgICAgIGlmIChpID09IGopIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICBBZGRFZGdlKHMsIGosIDEpOwogICAgICBpZiAoYVtqXSAhPSBpICYmIGJbal0gIT0gaSkgewogICAgICAgIEFkZEVkZ2UoaiwgbiArIGFbal0sIDEpOwogICAgICAgIEFkZEVkZ2UoaiwgbiArIGJbal0sIDEpOwogICAgICB9CiAgICAgIGludCB3aiA9IGNudCAtIDE7CiAgICAgIGlmIChhW2ldID09IGogfHwgYltpXSA9PSBqKSB7CiAgICAgICAgLS13ajsKICAgICAgfQogICAgICBBZGRFZGdlKG4gKyBqLCB0LCB3aik7CiAgICB9CiAgICBpZiAoTWF4RmxvdyhzLCB0KSA8IChuIC0gY250IC0gMSkpIHsKICAgICAgKythbnM7CiAgICB9CiAgfQogIGNvdXQgPDwgYW5zIDw8ICdcbic7CgogIHJldHVybiAwOwp9