#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#define ll long long
#define all(data) data.begin() , data.end()
using namespace std;
const int N = 5e5;
const ll inf32 = 1e9;
ll n , m , cnt , cc , root;
int tmp[N + 5] , dp[N + 5][2];
vector < int > a[N + 5] , g[N + 5];
void init()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
#define TASK "Sheep"
if(fopen(TASK".INP" , "r"))
{
freopen(TASK".INP" , "r" , stdin);
freopen(TASK".OUT" , "w" , stdout);
}
}
map < tuple < int , int , int > , int > mp;
void DFS(int u , int par)
{
dp[u][0] = 0;
vector<int> child;
for(int v : a[u]) if(v != par)
{
DFS(v , u);
child.push_back(v);
dp[u][0] += max(dp[v][0] , dp[v][1]);
}
dp[u][1] = -inf32;
int S = dp[u][0];
for(int v : child)
dp[u][1] = max(dp[u][1] , 1 + dp[v][0] + (S - max(dp[v][0] , dp[v][1])));
}
void process()
{
mp.clear();
cnt = cc = 0;
for(int i = 1 ; i <= n ; i ++)
{
sort(all(g[i]) , [&](const int &x , const int &y) {
return (x - i + n) % n < (y - i + n) % n;
});
//cout << i << '\n';
//for(int &x : g[i]) cout << x << ' '; cout << '\n';
cc = 0;
for(int j = 1 ; j < (int)g[i].size() ; j ++)
{
int x = i , y = g[i][j] , z = g[i][j - 1];
int i1 = x , i2 = y , i3 = z;
if(i1 > i2) swap(i1 , i2);
if(i1 > i3) swap(i1 , i3);
if(i2 > i3) swap(i2 , i3);
tuple<int,int,int> key = make_tuple(i1 , i2 , i3);
if(mp.find(key) == mp.end()) mp[key] = ++cnt;
tmp[++cc] = mp[key];
}
for(int j = 1 ; j < cc ; j ++)
{
int u = tmp[j] , v = tmp[j + 1];
a[u].push_back(v);
//a[v].push_back(u);
//cout << u << ' ' << v << '\n';
}
}
root = 1;
for(int i = 1 ; i <= cnt ; i ++) if(a[i].size() > a[root].size()) root = i;
DFS(root , 0);
//cout << cnt << ":\n";
cout << cnt - max(dp[root][0] , dp[root][1]) << '\n';
}
void read()
{
cin >> n;
for(int i = 1 ; i <= n ; i ++)
{
g[i].push_back((i % n) + 1);
g[(i % n) + 1].push_back(i);
}
for(int i = 1 ; i <= n - 3; i ++)
{
int u , v; cin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
}
int main()
{
init();
int test_case = 1;
while(test_case --)
{
read();
process();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNwcmFnbWEgR0NDIG9wdGltaXplKCJPMyx1bnJvbGwtbG9vcHMiKQojcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsYm1pLGJtaTIsbHpjbnQscG9wY250IikKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBhbGwoZGF0YSkgZGF0YS5iZWdpbigpICwgZGF0YS5lbmQoKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBOID0gNWU1Owpjb25zdCBsbCBpbmYzMiA9IDFlOTsKCmxsIG4gLCBtICwgY250ICwgY2MgLCByb290OwppbnQgdG1wW04gKyA1XSAsIGRwW04gKyA1XVsyXTsKdmVjdG9yIDwgaW50ID4gYVtOICsgNV0gLCBnW04gKyA1XTsKCnZvaWQgaW5pdCgpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICAjZGVmaW5lIFRBU0sgIlNoZWVwIgogICAgaWYoZm9wZW4oVEFTSyIuSU5QIiAsICJyIikpCiAgICB7CiAgICAgICAgZnJlb3BlbihUQVNLIi5JTlAiICwgInIiICwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oVEFTSyIuT1VUIiAsICJ3IiAsIHN0ZG91dCk7CiAgICB9Cn0KCm1hcCA8IHR1cGxlIDwgaW50ICwgaW50ICwgaW50ID4gLCBpbnQgPiBtcDsKCnZvaWQgREZTKGludCB1ICwgaW50IHBhcikKewogICAgZHBbdV1bMF0gPSAwOwogICAgdmVjdG9yPGludD4gY2hpbGQ7CiAgICBmb3IoaW50IHYgOiBhW3VdKSBpZih2ICE9IHBhcikKICAgIHsKICAgICAgICBERlModiAsIHUpOwogICAgICAgIGNoaWxkLnB1c2hfYmFjayh2KTsKICAgICAgICBkcFt1XVswXSArPSBtYXgoZHBbdl1bMF0gLCBkcFt2XVsxXSk7CiAgICB9CiAgICBkcFt1XVsxXSA9IC1pbmYzMjsKICAgIGludCBTID0gZHBbdV1bMF07CiAgICBmb3IoaW50IHYgOiBjaGlsZCkKICAgICAgICBkcFt1XVsxXSA9IG1heChkcFt1XVsxXSAsIDEgKyBkcFt2XVswXSArIChTIC0gbWF4KGRwW3ZdWzBdICwgZHBbdl1bMV0pKSk7Cn0KCnZvaWQgcHJvY2VzcygpCnsKICAgIG1wLmNsZWFyKCk7CiAgICBjbnQgPSBjYyA9IDA7CiAgICBmb3IoaW50IGkgPSAxIDsgaSA8PSBuIDsgaSArKykKICAgIHsKICAgICAgICBzb3J0KGFsbChnW2ldKSAsIFsmXShjb25zdCBpbnQgJnggLCBjb25zdCBpbnQgJnkpIHsKICAgICAgICAgICAgcmV0dXJuICh4IC0gaSArIG4pICUgbiA8ICh5IC0gaSArIG4pICUgbjsKICAgICAgICB9KTsKICAgICAgICAvL2NvdXQgPDwgaSA8PCAnXG4nOwogICAgICAgIC8vZm9yKGludCAmeCA6IGdbaV0pIGNvdXQgPDwgeCA8PCAnICc7IGNvdXQgPDwgJ1xuJzsKICAgICAgICBjYyA9IDA7CiAgICAgICAgZm9yKGludCBqID0gMSA7IGogPCAoaW50KWdbaV0uc2l6ZSgpIDsgaiArKykKICAgICAgICB7CiAgICAgICAgICAgIGludCB4ID0gaSAsIHkgPSBnW2ldW2pdICwgeiA9IGdbaV1baiAtIDFdOwogICAgICAgICAgICBpbnQgaTEgPSB4ICwgaTIgPSB5ICwgaTMgPSB6OwogICAgICAgICAgICBpZihpMSA+IGkyKSBzd2FwKGkxICwgaTIpOwogICAgICAgICAgICBpZihpMSA+IGkzKSBzd2FwKGkxICwgaTMpOwogICAgICAgICAgICBpZihpMiA+IGkzKSBzd2FwKGkyICwgaTMpOwogICAgICAgICAgICB0dXBsZTxpbnQsaW50LGludD4ga2V5ID0gbWFrZV90dXBsZShpMSAsIGkyICwgaTMpOwogICAgICAgICAgICBpZihtcC5maW5kKGtleSkgPT0gbXAuZW5kKCkpIG1wW2tleV0gPSArK2NudDsKICAgICAgICAgICAgdG1wWysrY2NdID0gbXBba2V5XTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBqID0gMSA7IGogPCBjYyA7IGogKyspCiAgICAgICAgewogICAgICAgICAgICBpbnQgdSA9IHRtcFtqXSAsIHYgPSB0bXBbaiArIDFdOwogICAgICAgICAgICBhW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICAgICAgLy9hW3ZdLnB1c2hfYmFjayh1KTsKICAgICAgICAgICAgLy9jb3V0IDw8IHUgPDwgJyAnIDw8IHYgPDwgJ1xuJzsKICAgICAgICB9CiAgICB9CiAgICByb290ID0gMTsKICAgIGZvcihpbnQgaSA9IDEgOyBpIDw9IGNudCA7IGkgKyspIGlmKGFbaV0uc2l6ZSgpID4gYVtyb290XS5zaXplKCkpIHJvb3QgPSBpOwogICAgREZTKHJvb3QgLCAwKTsKICAgIC8vY291dCA8PCBjbnQgPDwgIjpcbiI7CiAgICBjb3V0IDw8IGNudCAtIG1heChkcFtyb290XVswXSAsIGRwW3Jvb3RdWzFdKSA8PCAnXG4nOwp9Cgp2b2lkIHJlYWQoKQp7CiAgICBjaW4gPj4gbjsKICAgIGZvcihpbnQgaSA9IDEgOyBpIDw9IG4gOyBpICsrKQogICAgewogICAgICAgIGdbaV0ucHVzaF9iYWNrKChpICUgbikgKyAxKTsKICAgICAgICBnWyhpICUgbikgKyAxXS5wdXNoX2JhY2soaSk7CiAgICB9CiAgICBmb3IoaW50IGkgPSAxIDsgaSA8PSBuIC0gMzsgaSArKykKICAgIHsKICAgICAgICBpbnQgdSAsIHY7IGNpbiA+PiB1ID4+IHY7CiAgICAgICAgZ1t1XS5wdXNoX2JhY2sodik7CiAgICAgICAgZ1t2XS5wdXNoX2JhY2sodSk7CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgaW5pdCgpOwogICAgaW50IHRlc3RfY2FzZSA9IDE7CiAgICB3aGlsZSh0ZXN0X2Nhc2UgLS0pCiAgICB7CiAgICAgICAgcmVhZCgpOwogICAgICAgIHByb2Nlc3MoKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==