#include <bits/stdc++.h>
using namespace std;
typedef struct nod{
int nr;
nod *next;
} * lista;
lista p,r,A[200000];
bool viz[2000000];
int n, m, x, y, i, j, k=0;
//A[100][100],;
void add(lista &p, int a){
r=new nod;
r->nr=a;
r->next=p;
p=r;
}
void dfs ( int x){
viz[x]=1;
for (lista p=A[x];p;p=p->next)
if (viz[p->nr]==0) dfs (p->nr);
}
int main(){
ifstream cin("dfs.in");
ofstream cout("dfs.out");
cin >>n>>m ;
while (m--){
cin>>x>>y;
add (A[y],x);
add (A[x],y);
}
for (i=1;i<=n;i++){
if (viz[i]==0){
dfs(i);
k++;
}
}
cout<<k;
}