program teeem;
var f,g:text;
a:array of array of integer;
v,viz,pred:array[1..10000] of integer;
i,j,sf,st,n,m,c,x,t,k:longint;
ok:boolean;
procedure df(nod:longint);
var k:longint;
begin
for k:=1 to a[nod,0] do
if (viz[a[nod,k]]=0) then
begin
viz[a[nod,k]]:=1;
df(a[nod,k]);
end;
end;
begin
assign(f,'dfs.in'); reset(f);
assign(g,'dfs.out'); rewrite(g);
readln(f,n,m);
c:=0;
setlength(a,n+1);
for i:=1 to n do
setlength(a[i],1);
for i:=1 to m do
begin
readln(f,k,t);
setlength(a[k],length(a[k])+1);
a[k,0]:=a[k,0]+1;
a[k,a[k,0]]:=t;
setlength(a[t],length(a[t])+1);
a[t,0]:=a[t,0]+1;
a[t,a[t,0]]:=k;
end;
viz[1]:=0;
for i:=1 to n do
begin
if viz[i]=0 then
begin
c:=c+1;
viz[i]:=1;
df(i);
end;
end;
write(g,c);
close(f);
close(g);
end.