rt
#include <iostream>
#include <cstdio>
inline int read()
{
int x=0,k=1;char c=getchar();
while(c>'9'||c<'0'){if(x='-')k=-1;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
return x*k;
}
const int maxn=5e4+10;
int ans,n,k,fa[maxn*5];
int find(int x){return fa[x]==fa[fa[x]]?fa[x]:find(fa[x]);}
void unity(int x,int y){fa[find(fa[x])]=find(fa[y]);}
int main()
{
n=read(),k=read();
for(int i=1;i<=3*n;i++)fa[i]=i;
while(k--)
{
int c,x,y;
c=read(),x=read(),y=read();
if(x>n||y>n){ans++;continue; }
if(c==1)
{
if(find(x+n)==find(y)||find(x+2*n)==find(y)){ans++;continue;}
unity(x,y);unity(x+n,y+n);unity(x+2*n,y+2*n);
}
if(c==2)
{
if(x==y||find(x)==find(y)||find(2*n+x)==find(y)){ans++;continue;}
unity(x,y+2*n);unity(x+n,y);unity(x+2*n,y+n);
}
}
printf("%d\n",ans);
return 0;
}