class Unionfind:
def __init__(self,sz):
self.p=list(range(sz))
self.r=[1]*sz
self.cnt=[1]*sz
def find(self,x):
if x==self.p[x]:
return x
self.p[x]=self.find(self.p[x])
return self.p[x]
def merge(self,u,v):
u=self.find(u)
v=self.find(v)
if u==v:
return
if self.r[u]>self.r[v]:
u,v=v,u
self.p[u]=v
self.cnt[v]+=self.cnt[u]
if self.r[u]==self.r[v]:
self.r[v]+=1
def get(self,u):
u=self.find(u)
return self.cnt[u]
n=int(input())
c=[0]*(n+1)
b=[0]*(n+1)
a=[[] for _ in range(n+1)]
for i in range(1,n+1):
x,y=map(int,input().split())
a[x].append(i*2)
a[y].append(i*2+1)
uf=Unionfind(n+1)
for i in range(1,n+1):
uf.merge(a[i][0]//2,a[i][1]//2)
for i in range(1,n+1):
if a[i][0]%2==0 and a[i][1]%2==0:
ri=uf.find(a[i][0]//2)
c[ri]+=1
for i in range(1,n+1):
ri=uf.find(a[i][0]//2)
if c[ri]>=2:
print('-1')
exit()
s=0
for i in range(1,n+1):
ri=uf.find(a[i][0]//2)
if b[ri]:
continue
b[ri]=1
x=uf.get(ri)
if x>=2:
s+=x+1
print(s)



