#include<bits/stdc++.h>
using namespace std;
int f[50001];
int e[50001];
int find(int x){
if(f[x]!=x){
return f[x]=find(f[x]);
}
return x;
}
void hb(int x,int y){
f[find(x)]=find(y);
e[find(y)]=max(find(e[find(x)]),find(e[find(y)]));
}
int main(){
int n,k,ans=0;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
f[i]=i;
}
for(int i=1;i<=k;i++){
int op,x,y;
scanf("%d%d%d",&op,&x,&y);
if(x>n||x<1||y>n||y<1){
ans++;
continue;
}
if(op==1){
if(e[find(x)]!=find(y)&&e[find(y)]!=find(x)&&(e[find(x)]==e[find(y)]||e[find(x)]==0||e[find(y)]==0)){
hb(x,y);
}
else{
ans++;
continue;
}
}
else{
if((e[find(x)]==find(y)||e[find(x)]==0)&&e[find(y)]!=find(x)){
e[find(x)]=find(y);
}
else{
ans++;
}
}
}
printf("%d",ans);
return 0;
}