#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin ("dfs.in");
ofstream fout ("dfs.out");
vector <int > v[100005];
int n, m, viz[100005], insule;
void citire()
{fin >> n >> m;
int x, y;
for (int i=1;i<=m;i++)
{ fin >> x >>y;
v[x].push_back(y);
v[y].push_back(x);
}
}
void dfs(int k)
{viz[k]=1;
for (int i=0;i<v[k].size();i++)
if(viz[v[k][i]]==0)
dfs(v[k][i]);
}
int main()
{citire();
for (int i=1;i<=n;i++)
if(viz[i]==0){dfs(i);
insule++;
}
fout << insule ;
return 0;
}