def DFS(g,v):
visited[v]=True
for nxt in g[v]:
if not visited[nxt]:
DFS(g,nxt)
n,m=map(int,input().split())
g=list([] for _ in range(n))
for j in range(m):
a,b=map(int,input().split())
g[a-1].append(b-1)
g[b-1].append(a-1)
visited=[False]*n
k=0
for i in range(n):
if not visited[i]:
k+=1
DFS(g,i)
print(k)