#include<bits/stdc++.h>
using namespace std;
int const N=5e4+5;
int const K=1e5+5;
int n,k;
int fa[N*3];
int ans;
struct node{
int u,v,w;
}a[K];
int find(int x){
return fa[x]==x?x:fa[x]=find(fa[x]);
}
void Union(int x,int y){
int rx=find(x);
int ry=find(y);
if(rx==ry) return;
fa[rx]=ry;
}
int main(){
freopen("06.txt","r",stdin);
cin >> n >> k;
for(int i=1;i<=3*n;i++) fa[i]=i;
int op,x,y;
int rx,ry;
for(int i=1;i<=k;i++){
cin >> op >> x >> y;
switch(op){
case 1:
if(find(fa[x+n])==find(fa[y]) ||
find(fa[x])==find(fa[y+n])) ans++;
else {
Union(fa[x],fa[y]);
Union(fa[x+n],fa[y+n]);
Union(fa[x+2*n],fa[y+2*n]);
}
break;
case 2:
if(find(fa[x])==find(fa[y]) ||
find(fa[x])==find(fa[y+n])) ans++;
else {
Union(fa[x+n],fa[y]);
Union(fa[x],fa[y+2*n]);
Union(fa[x+2*n],fa[y+n]);
}
break;
}
}
cout << ans;
}