#include<iostream>
#include<vector>
#include<queue>
#include<fstream>
#include<list>
using namespace std;
ifstream fin("dfs.in");
ofstream fout("dfs.out");
int n,m;
vector<list<int>> muchii;
vector<int> vizitat;
int conexe;
void DFS(int nod)
{
vizitat[nod]=1;
for(int i:muchii[nod])
{
if(vizitat[i]!=1)
DFS(i);
}
}
int main()
{
fin>>n>>m;
muchii.resize(n+5);
vizitat.resize(n+5);
int x,y;
while(fin>>x>>y)
{
muchii[x].push_back(y);
muchii[y].push_back(x);
}
for(int i=1;i<=n;i++)
if(!vizitat[i])
{conexe++;
DFS(i);}
fout<<conexe;
return 0;
}