#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
vector<int> c[100000];
ifstream f("dfs.in");
ofstream g("dfs.out");
int v[100000],p=1,n,m,con=0;
int dfs(int nod)
{int i;
v[nod]=1;
for (i=0;i<c[nod].size();i++)
if(v[c[nod][i]]==0)
dfs(c[nod][i]);
}
int main()
{
int i,j,k,z;
f>>n>>m;
for(i=1;i<=m;i++)
{f>>k>>z;
c[k].push_back(z);
c[z].push_back(k);
}
dfs(1);
int q=0;
int nod=1;
i=1;
while(i<=n)
{dfs(i);con++;
// for(j=1;j<=n;j++)
// cout<<v[j]<<" ";
//cout<<endl;
while(v[i]!=0 && i<=n)
i++;
}
g<<con;
}