#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define dbg(x) cout << #x << " : " << x << endl
#define rep(i, a, b) for (int i = (a); i <= (b); i++)
#define maxn 100005
vector<ll> edges[maxn];
ll dau[maxn];
ll n, m;
void dfs(ll source)
{
    dau[source] = 1;
    stack<ll> st;
    st.push(source);
    while (!st.empty())
    {
        ll p = st.top();
        st.pop();
        for (auto v : edges[p])
        {
            if (dau[v] == 1)
                continue;
            dau[v] = 1;
            st.push(v);
        }
    }
}
int main()
{
    // freopen("input.txt","r",stdin);
    // freopen("output.txt","w",stdout);
    cin >> n >> m;
    for (ll i = 0; i < m; i++)
    {
        ll u, v;
        cin >> u >> v;
        u--, v--;
        edges[u].push_back(v);
        edges[v].push_back(u);
    }
    ll dem = 0;
    for (ll i = 0; i < n; i++)
    {
        if (dau[i] == 0)
        {
            dem++;
            dfs(i);
        }
    }
    cout << dem << '\n';
    return 0;
}