#include<bits/stdc++.h>
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;
const int N=2010;
int p[N];
int n,m,cnt;
void init()
{
cnt=0;
for(int i=0;i<=n;i++)
p[i]=i;
}
int find(int x)
{
if(p[x]!=x)p[x]=find(p[x]);
return p[x];
}
int main()
{
while(cin>>n>>m)
{
init();
for(int i=0;i<m;i++)
{
int u,v;
cin>>u>>v;
p[find(u)]=find(v);
}
for(int i=1;i<=n;i++)
{
if(p[i]==i)//判断此结点的父节点是否为自己,若判断为真则为一个连通块
cnt++;
}
cout<<cnt<<endl;
}
return 0;
}