#include<bits/stdc++.h>
using namespace std;
int n,m,father[100005],u,v,ans;
void makeSet(int n){
for(int i=1;i<=n;i++)
father[i]=i;
}
int findSet(int x){
if(father[x]==x)
return x;
else
return father[x]=findSet(father[x]);
}
void unionSet(int a,int b){
int x=findSet(a),y=findSet(b);
if(x!=y)
father[x]=y;
}
int main(){
scanf("%d%d",&n,&m);
makeSet(n);
while(m--){
scanf("%d%d",&u,&v);
unionSet(u,v);
}
for(int i=1;i<=n;i++)
ans+=(father[i]==i);
printf("%d\n",ans);
return 0;
}