#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<set>
using namespace std;
int p[60000],lv[60000],st[600000];
int calc(int p, int s) {
if (s == 0) return p;
if (s == 1) {
p--;
if (p == -1) p = 2;
}
if (s == -1) {
p++;
if (p == 3) p = 0;
}
return p;
}
int fight(int x, int y) {
if (x == y) return 0;
if (x == y + 1 || x == 0 && y == 2) return 1;
return -1;
}
int main() {
int i, n, q,cnt=0;
scanf("%d%d", &n, &q);
for (i = 1;i <= n;i++) p[i] = i;
for (i = 1;i <= q;i++) {
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
if (y <= 0 || z <= 0 || y > n || z > n) { cnt++; continue; }
int yy = 0, zz = 0;
if (x == 2) yy = 1;
while (y != p[y]) {
yy = calc(yy, st[y]);
y = p[y];
}
while (z != p[z]) {
zz = calc(zz, st[z]);
z = p[z];
}
if (y == z) {
if (yy != zz) cnt++;
continue;
}
if (lv[y] < lv[z]) {
p[y] = z;
st[y] = fight(yy, zz);
}
else if (lv[y] > lv[z]) {
p[z] = y;
st[z] = fight(zz, yy);
}
else {
p[z] = y;
st[z] = fight(zz, yy);
lv[y]++;
}
}
printf("%d", cnt);
return 0;
}