#UF n,m=map(int,input().split()) n*=2 UFI=[None]+[1]*n UFH=[None]+[1]*n def uff(k): point=k while type(UFH[point])!=int: point=int(UFH[point]) return point def ufu(k1,k2): p1=uff(k1) p2=uff(k2) if p1==p2: return 0 if UFH[p1]>UFH[p2]: p1,p2=p2,p1 UFI[p2]=UFI[p1]+UFI[p2] UFH[p2]=max(UFH[p2],UFH[p1]+1) UFH[p1]=str(p2) for i in range(m): a,b=map(int,input().split()) ufu(a,b) I=[None]+[0]*n for i in range(1,n+1): I[uff(i)]=1 wans=0 for i in range(1,n+1): if I[i] and UFI[i]%2: wans+=1 print(wans//2)