#include <bits/stdc++.h>
#define ll long long
#define all(x) x.begin(),x.end()
#define f1(i, n) for(int i=1;i<=n;++i)
using namespace std;
const int maxn = 1e5 + 5;
const int MOD = 1e9;
int n, m;
vector<int> adj[maxn];
bool visited[maxn];
void dfs(int u) {
visited[u] = true;
for (auto v : adj[u]) {
if (!visited[v]) {
dfs(v);
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
int u, v;
for (int i = 1; i <= m; ++i) {
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
int cnt = 0;
for (int i = 1; i <= n; ++i) {
if (!visited[i]) {
cnt++;
dfs(i);
}
}
cout << cnt;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSx4LmVuZCgpCiNkZWZpbmUgZjEoaSwgbikgZm9yKGludCBpPTE7aTw9bjsrK2kpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgbWF4biA9IDFlNSArIDU7CmNvbnN0IGludCBNT0QgPSAxZTk7CgppbnQgbiwgbTsKdmVjdG9yPGludD4gYWRqW21heG5dOwpib29sIHZpc2l0ZWRbbWF4bl07Cgp2b2lkIGRmcyhpbnQgdSkgewoJdmlzaXRlZFt1XSA9IHRydWU7Cglmb3IgKGF1dG8gdiA6IGFkalt1XSkgewoJCWlmICghdmlzaXRlZFt2XSkgewoJCQlkZnModik7CgkJfQoJfQp9CgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCWNpbi50aWUobnVsbHB0cik7CgoJY2luID4+IG4gPj4gbTsKCglpbnQgdSwgdjsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG07ICsraSkgewoJCWNpbiA+PiB1ID4+IHY7CgkJYWRqW3VdLnB1c2hfYmFjayh2KTsKCQlhZGpbdl0ucHVzaF9iYWNrKHUpOwoJfQoKCWludCBjbnQgPSAwOwoKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgewoJCWlmICghdmlzaXRlZFtpXSkgewoJCQljbnQrKzsKCQkJZGZzKGkpOwoJCX0KCX0KCgljb3V0IDw8IGNudDsKCgp9CgoK