#include<bits/stdc++.h>
using namespace std;
vector <long long> a[100005];
bool visited[100005];
long long n,m;
void bfs(long long i, vector<long long> a[], bool visited[])
{
    queue<long long> q;

    q.push(i);
    visited[i] = true;
    while (!q.empty())
    {
        long long u = q.front();
        q.pop();
        for (long long v : a[u])
        {
            if (!visited[v])
            {
                visited[v] = true;
                q.push(v);
            }
        }
    }
}
void input()
{
    cin >> n >> m;
    for (long long i=1; i<=m; i++)
    {
        long long u,v;
        cin >> u >> v;
        a[u].push_back(v);
        a[v].push_back(u);
    }
}
void solve()
{
    for (long long i=1; i<=n; i++)
    {
        visited[i]=false;
    }
    long long cnt = 0;
    for (long long i = 1; i <= n; i++)
    {
        if (!visited[i])
        {
            cnt++;
            bfs(i,a,visited);
        }
    }
    cout << cnt;
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    input();
    solve();
}
