#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
bool viz[1000];
void dfs(int nod,vector<int> vecin[] ) {
viz[nod]=true;
for ( int vec: vecin[nod]) {
if(!viz[vec]) {
dfs(vec,vecin);
}
}
}
int main() {
int conex=0;
ifstream fin("dfs.in");
ofstream fout("dfs.out");
int n,m;
fin>>n>>m;
vector<int> vec[n];
int nod;
for (int i=0;i<<;i++) {
int nod,vecin;
fin>>nod>>vecin;
vec[vecin].push_back(nod);
vec[nod].push_back(vecin);
}
for (int i=1;i<=n;i++) {
if (!viz[i]) {
conex++;
dfs(vecin,vec);
}
}
fout << componente_conexe << "\n";
}