#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<iomanip>
#include<cstring>
using namespace std;
typedef long long ll;
const int N=4004;
int read()
{
int res=0,ch,flag=0;
if((ch=getchar())=='-') //判断正负
flag=1;
else if(ch>='0'&&ch<='9') //得到完整的数
res=ch-'0';
while((ch=getchar())>='0'&&ch<='9')
res=res*10+ch-'0';
return flag?-res:res;
}
int n,m;
int result[N][2],use[N];
int e[N*16],ne[N*16],idx,h[N*16];
void add(int a,int b)
{
e[idx]=b;
ne[idx]=h[a];
h[a]=idx++;
}
bool dfs(int now)
{
for(int j=h[now]; ~j; j=ne[j])
{
int v=e[j];
if(!use[v])
{
use[v]++;
if(!result[v][0]||dfs(result[v][0]))
{
result[v][0]=now;
return true;
}
if(!result[v][1]||dfs(result[v][1]))
{
result[v][1]=now;
return true;
}
}
}
return false;
}
int main()
{
memset(h,-1,sizeof h);
n=read();
for(int i=1; i<=n*2; i++)
{
int a=read(),b=read();
add(i,a);
add(i,b);
}
int ans=0;
for(int i=1; i<=n*2; i++)
{
memset(use,0,sizeof(use));
if(dfs(i))
ans++;
}
cout<<ans<<endl;
}