import sys sys.setrecursionlimit(2*10**5) N,M=map(int,input().split()) edge=[[] for _ in range(2*N)] for i in range(M): a,b=map(int,input().split()) edge[a-1].append(b-1) edge[b-1].append(a-1) use=[False for _ in range(2*N)] ans=0 def dfs(i): global use,ans use[i]=True con=False for e in edge[i]: if not use[e]: r=dfs(e) if r==True: con=True if con: ans+=1 return False else: return True for i in range(2*N): if not use[i]: dfs(i) print(N-ans)