#include <fstream>
#include <vector>
#define NMAX 100000
using namespace std;
bool viz[NMAX + 1];
vector<int> g[NMAX + 1];
void dfs( int x ) {
viz[x] = 1;
for( auto it : g[x] )
if( viz[it] == 0 )
dfs(it);
}
int main() {
ifstream fin("dfs.in");
ofstream fout("dfs.out");
int n, i, m, a, b;
fin>>n>>m;
for( i = 1; i <= m; i ++ ) {
fin>>a>>b;
g[a].push_back(b);
g[b].push_back(a);
}
int componente = 0;
for( i = 1; i <= n; i ++ ) {
if( viz[i] == 0 )
dfs(i), componente ++;
}
fout<<componente;
return 0;
}