#include <iostream>
#include <vector>
using namespace std;
const int MAXN=500005;
vector<int> adj[MAXN];
int col[MAXN];
void dfs(int v, int b){
col[v]=b;
for(int u: adj[v]){
if(col[u]==0)
dfs(u, b);
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n,m;
cin>>n>>m;
for(int i=0; i<m; i++){
int a,b;
cin>>a>>b;
adj[a].push_back(b);
adj[b].push_back(a);
}
int ile=0;
for(int i=1; i<n+1; i++){
if(col[i]==0){
ile++;
dfs(i, ile);
}
}
cout<<ile;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1BWE49NTAwMDA1OwoKdmVjdG9yPGludD4gYWRqW01BWE5dOwppbnQgY29sW01BWE5dOwoKdm9pZCBkZnMoaW50IHYsIGludCBiKXsKCWNvbFt2XT1iOwoJZm9yKGludCB1OiBhZGpbdl0pewoJCWlmKGNvbFt1XT09MCkKCQlkZnModSwgYik7Cgl9Cn0KCgoKCgppbnQgbWFpbigpIHsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJY2luLnRpZShOVUxMKTsKaW50IG4sbTsKY2luPj5uPj5tOwpmb3IoaW50IGk9MDsgaTxtOyBpKyspewoJaW50IGEsYjsKCWNpbj4+YT4+YjsKCWFkalthXS5wdXNoX2JhY2soYik7CglhZGpbYl0ucHVzaF9iYWNrKGEpOwp9CmludCBpbGU9MDsKZm9yKGludCBpPTE7IGk8bisxOyBpKyspewoJaWYoY29sW2ldPT0wKXsKCQlpbGUrKzsKCQlkZnMoaSwgaWxlKTsKCX0KfQoKY291dDw8aWxlOwoKCXJldHVybiAwOwp9