#include <cstdio>
#include <vector>
#define Nmax 100005
using namespace std;
bool viz[Nmax];
vector <int> L[Nmax];
inline void Dfs(int nod)
{
int i,len=L[nod].size();
viz[nod]=true;
for(i=0;i<len;++i)
if(!viz[L[nod][i]])
Dfs(L[nod][i]);
}
int main()
{
int N,M,x,y,i,sol=0;
freopen ("dfs.in","r",stdin);
freopen ("dfs.out","w",stdout);
scanf("%d%d", &N,&M);
while(M--)
{
scanf("%d%d", &x,&y);
L[x].push_back(y);
L[y].push_back(x);
}
for(i=1;i<=N;++i)
if(!viz[i])
{
++sol;
Dfs(i);
}
printf("%d\n", sol);
return 0;
}