#include<cstdio>
#include<cstring>
#define li(i,j,k) for(int i=j ; i<=k ; i++)
#define si(i,j,k) for(int i=j ; i>=k ; i--)
int n,k;
int ans=0;
int fa[150001];
int get_root(int x){
if(fa[x]==x)return x;
else fa[x]=get_root(fa[x]);
return fa[x];
}
void unity(int a,int b){
a=get_root(a),b=get_root(b);
fa[a]=b;
return ;
}
int main(){
scanf("%d%d",&n,&k);
li(i,1,n*3)fa[i]=i;
li(i,1,k){
int a,x,y;
scanf("%d%d%d",&a,&x,&y);
if(x>n || y>n){
ans++;
continue;
}
if(x==y){
ans++;
continue;
}
if(a==1){
if(get_root(x+n)==get_root(y) || get_root(x+2*n)==get_root(y)){
ans++;
continue;
}
unity(x,y),unity(x+n,y+n),unity(x+n*2,y+n*2);
}
if(a==2){
if(get_root(x)==get_root(y) || get_root(x+n*2)==get_root(y)){
ans++;
continue;
}
unity(x,y+n*2),unity(x+n,y),unity(x+n*2,y+n);
}
}
printf("%d\n",ans-1);
return 0;
}