var
  ship,father:array[1..50002] of longint;
  fb,fc,sb,sc,b,c,a,i,n,k,sum:longint;
procedure init;
var
  i:longint;
begin
  readln(n,k);
  for i:=1 to n do
    begin
      ship[i]:=0;
      father[i]:=i;
    end;
  sum:=0;
end;
function getancestor(x:longint):longint;
var
  temp:longint;
begin
  temp:=x;
  while (father[temp]<>temp) do temp:=father[temp];
  getancestor:=temp;
end;
function getship(x:longint):longint;
begin
  if father[x]=x then
    begin
      getship:=0;
      exit;
    end;
    ship[x]:=(ship[x]+getship(father[x])) mod 3;
    father[x]:=getancestor(x);
    getship:=ship[x];
end;
procedure work;
var
  i:longint;
begin
  for i:=1 to k do
    begin
      readln(a,b,c);

      if (b>n) or (c>n) or ((a=2) and (b=c)) then
        begin
          inc(sum);
          continue;
        end;
      fb:=getancestor(b);
      fc:=getancestor(c);
      sc:=getship(c);
      sb:=getship(b);
      if a=1 then
        begin
          if fc<>fb then
            begin
              father[fc]:=b;
              ship[fc]:=(3-sc) mod 3;
            end
            else if sb<>sc then inc(sum);
        end
        else
        begin
          if fc<>fb then
            begin
              father[fc]:=b;
              ship[fc]:=(2-sc) mod 3;
            end
            else if sb<>(sc+1) mod 3 then inc(sum);
        end;
    end;
end;
begin
  init;
  work;
  writeln(sum);
end.

/**************************************************************
	Problem: 2238
	User: admin
	Language: Pascal
	Result: Wrong Answer
****************************************************************/