'use strict';
(function(input){
  input=input.trim().split(/\n/);
  input=input.map(str=>str.split(/\s+/).map(x=>x-0));
  const N=input[0][0];
  const M=input[0][1];
  input.shift();
  
  function Node(){
    var t=this;
    t.parent=null;
    t.size=1;
  }
  
  Node.prototype={
    
    top:function(){
      var t=this;
      if(t.parent=null)return t;
      else return t.parent.top();
    },
    
    union:function(node){
      var T=this.top();
      var t=node.top();
      if(T.size>t.size){
        t.parent=T;
        T.size+=t.size;
      }else{
        T.parent=t;
        t.size+=T.size;
      }
    },
  }
  
  const nodes=new Array(N+1).fill(0).map(x=>new Node());
  nodes[0]='zero';
  
  input.forEach(function(a){
    a[0].union(a[1]);
  });
  
  var ans=0;
  for(let i=1;i<=N;i++){
    if(nodes[i].parent===null)
      ans++;
  }
  console.log(ans);
})(require('fs').readFileSync('/dev/stdin','utf8'));