#include <fstream>
#include <vector>
#define Nmax 100001
using namespace std;
ifstream f ("royfloyd.in");
ofstream g ("royfloyd.out");
int n, m, fv[ Nmax ], nrc;
vector < int > v[ Nmax ];
void dfs( int nod )
{
fv[ nod ] = 1;
for ( int i = 0; i < (int)v[ nod ].size(); ++ i )
if ( not fv[ v[ nod ][ i ] ] )
dfs( v[ nod ][ i ] );
}
int main()
{
int x, y;
f >> n >> m;
for ( int i = 1; i <= m; ++ i )
{
f >> x >> y;
v[ x ].push_back( y );
v[ y ].push_back( x );
}
for ( int i = 1; i <= n; ++ i )
if ( not fv[ i ] )
{
nrc ++;
dfs( i );
}
g << nrc;
return 0;
}