# https://github.com/shakayami/ACL-for-python/blob/master/dsu.py class dsu(): n=1 parent_or_size=[-1 for i in range(n)] def __init__(self,N): self.n=N self.parent_or_size=[-1 for i in range(N)] def merge(self,a,b): assert 0<=a0: result2.append(result[i]) return result2 n,m=map(int,input().split()) u,v=[list(e) for e in zip(*[map(lambda s: int(s)-1, input().split()) for i in range(m)])] g=dsu(n) outdeg=[0 for i in range(n)] indeg=[0 for i in range(n)] for i in range(m): g.merge(u[i],v[i]) outdeg[u[i]]+=1 indeg[v[i]]+=1 ccs=g.groups() ans=-1 for cc in ccs: tmp=0 ok=False for p in cc: if indeg[p]>0: ok=True tmp+=abs(outdeg[p]-indeg[p]) tmp//=2 ans+=max(tmp-1,0)+ok print(ans)