#include <bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define fi first
#define se second
const int N = 1e5+5;
int n,dp[N][6],par[N],ck = 0;
vector<int>adj[N];
pii du;
void init(){
for(int i = 1; i <= n; i++) par[i] = i;
}
int find(int u){
if(u == par[u]) return u;
return par[u] = find(par[u]);
}
void join(int u, int v){
u = find(u);
v = find(v);
par[v] = u;
}
void dfs(int u, int p){
int sum1 = 0;
int sum2 = 0;
int mn1 = 1e9;
int mn2 = 1e9;
for(int v: adj[u]){
if(v != p){
dfs(v,u);
sum1 += min(dp[v][0],dp[v][4]); //dp[u][0][0],dp[u][0][1]
sum2 += dp[v][1]; //dp[u][1][0],dp[u][1][1]
mn1 = min(mn1,min(dp[v][2],dp[v][5])-min(dp[v][0],dp[v][4])); //dp[u][0][0]
mn2 = min(mn2,dp[v][3]-dp[v][1]); // dp[u][1][0]
}
}
dp[u][0] = sum1+mn1;
dp[u][1] = sum1;
dp[u][2] = sum2+mn2+1;
dp[u][3] = sum2+1;
if(ck == 0){
if(u == du.fi || u == du.se) dp[u][2] = dp[u][3] = 1e9;
}
else if(ck == 1){
if(u == du.fi) dp[u][0] = dp[u][1] = 1e9;
if(u == du.se){
dp[u][0] = dp[u][1] = dp[u][2] = dp[u][3] = 1e9;
dp[u][4] = sum1;
}
}
else if(ck == 2){
if(u == du.se) dp[u][0] = dp[u][1] = 1e9;
if(u == du.fi){
dp[u][0] = dp[u][1] = dp[u][2] = dp[u][3] = 1e9;
dp[u][4] = sum1;
}
}
else{
if(u == du.fi || u == du.se){
dp[u][0] = dp[u][1] = dp[u][2] = dp[u][3] = 1e9;
dp[u][5] = sum2+1;
}
}
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n;
init();
for(int i = 1; i <= n; i++){
int u,v;
cin >> u >> v;
if(find(u) != find(v)){
join(u,v);
adj[u].push_back(v);
adj[v].push_back(u);
}
else du = {u,v};
}
int ans = 1e9;
for(int t = 0; t < 4; t++){
ck = t;
for(int i = 1; i <= n; i++){
for(int j = 0; j <= 5; j++) dp[i][j] = 1e9;
}
dfs(1,0);
ans = min({ans,dp[1][0],dp[1][2],dp[1][4],dp[1][5]});
}
if(ans > n) cout << -1;
else cout << ans;
}
//-----+--+----+-==-=*==--=+----------==----------------+=-----==-=+-==----------------
//---===+=----+=----=*=+=*+----------==-----------+=-----==-----==--+-+----------------
//---+=**=-=+---------***+----=------=-------------=-------+-----==-+--=---------------
//----*+-+++**++------=#+----===-----=-------------=-------==-----+-=+=-+--------------
//----++#***+*+++-----=+-----=-=----+---------------+-------+=-----*=-==-+-------------
//---+=+**++**++++==++*=-----===----+---------------+----=---=-----=*+*=-==------------
//---++**==+--++++++***-----+-+-----+---------------==---==--==-----+**---+------------
//----++*#=-+++***+***------+-+-----+----------------=----+---*+=---=*#=-=-+-----------
//-----=**+++*+++**%++-----=--+-----+----------------=----*=--==+==++***-=+==----------
//-------**#**++*%%@==-----=--+-----+-------------=+++++=-+=---+=+=-=+**--+++----------
//---------====+@@%@-=-----+--+--=+++++--------------=----+==--===---+*---+==+---------
//-----------=@*%%%%-=-----+=-==-----=---------------=----+--=-==+-=-=*----++==--------
//----------%#=%=#%%==-----=+--=-----=---------------+----+--===*=*==**=---+-++--------
//--------+@++@=*@%*-=-----=+=-=-----==-------------++-*%%%***=++-+=-+-+---=-===-------
//-------#%-=%=+@%@+-=-----=+=--+++*==*=------------**@*##%*--=-+-----=+---==-+==------
//------=%+-=%=%*@@--=-----=*#*=+*###@%*---------=+*++%***##=-+-+------+---==-=+=------
//-------%*-=%@+@@+-*=-----+-=--@##*##=+==----------=-#*#***-==-+------+---==--++------
//-------+@=+@@*@*-=-=-----=-==-*#%*##=----------------++=+=----+------+---==--==+-----
//--------%@@%%@*=--+=-----=---+=+#==*-------------------==-----+------+---==---=+-----
//----------%+=#-=--==-----+-------===--------------------------*------+---==---+==----
//---------##-%+-=---=-----++----------------------------------=*------=---==---=+=----
//--------=#-*@=-=---=-----**=----------------=----------------+*------=---==----++----
//-------=@==%*-==---=-----++*---------------------------------*+------+---==----++=---
//------=%*-=@--==---=-----+++*-------------------------------**=------+---==----==+---
//------*#--##--==---=-----+++*+--------------------+--------+**=------+---=-----==+---
//-----=@=--@*---=---=-----+++#+*=--------=+=----=+=-------=#+**-------+---+-----==+---
//----=%+--=@+---=---=-----=+**++**=---------------------=*+****------==---+-----===---
//----*#---*@=---=--==-----=*+#++*+++*=---------------=*#*++#+*+==----+==-+=-----====--
//---=@=---%%----=--=+-----=*+#++*++++***+----------*****+++#**++-----+==-+-------===--
//---%#----%%---==--=+------*+*++*++**+***+**++=+****+==++*+**#-+-----+==-+-------+==--
//--=@=---=%#---==--+*------*++*+*++#+*****++++****+--==*=*****==----===-==-------+==--
//--##----=@*---+=--+*------=++*+*++*++++++*******=-------+***==-----===-==-------+==--
//-=@+----+@=---+=--+#=-----=*+*+*++#++*+++**#*++-+-------+***-+-----+===+--------*==--
//-*@=----*@=---=---+*+------++*+*+*-=++*+***=-+--+--------#**-=-----*====--------*==--
//=%%-----#@---==---=**------++****---------*=----+--------=#=+-----=*==*---------*==--
//=@*-----%@---==---=*#------++*+------=+%@##@+==%%+*+==----+==-----+*+-++++=+++*++==--
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |