#include<stdio.h>constint maxn =110;int father[maxn];bool isRoot[maxn];voidinit(int n){
for(int i =1; i <= n; i++){
father[i]= i;
isRoot[i]=false;}}intfindFather(int x){
while(x != father[x]){
x = father[x];}return x;}voidUnion(int a,int b){
int faA =findFather(a);int faB =findFather(b);if(faA != faB){
father[faA]= faB;}}intmain(){
int n, m, a, b;scanf("%d%d",&n,&m);init(n);for(int i =0; i < m; i++){
scanf("%d%d",&a,&b);Union(a, b);}for(int i =1; i <= n; i++){
isRoot[findFather(i)]=true;}int ans =0;for(int i =1; i <= n; i++){
ans += isRoot[i];}printf("%d\n", ans);return0;}