#include<bits/stdc++.h>
using namespace std;
const int N = 5e4 + 10;
int fa[N], siz[N], val[N], sum[N];
int find_root(int x) {
if (fa[x] == x) {
sum[x] = 0;
return x;
}
int root = find_root(fa[x]);
sum[x] = (sum[fa[x]] + val[x]) % 3;
return root;
}
void init(int n) {
for (int i = 1; i <= n; i++) {
fa[i] = i;
siz[i] = 1;
val[i] = 0;
sum[i] = 0;
}
}
int main() {
int n, k;
cin >> n >> k;
init(n);
int ans = 0;
for (int i = 1; i <= k; i++) {
int d, x, y;
cin >> d >> x >> y;
if (x > n || y > n) {
ans++;
continue;
}
if (d == 1) {
int xx = find_root(x);
int yy = find_root(y);
if (xx == yy) {
if (sum[x] == sum[y]) continue;
if (sum[x] != sum[y]) ans++;
}
else {
if (siz[xx] > siz[yy]) {
swap(xx, yy);
swap(x, y);
}
fa[xx] = yy;
siz[yy] += siz[xx];
fa[yy] = 3 - sum[x];
}
} else {
int xx = find_root(x);
int yy = find_root(y);
if (xx == yy) {
if ((sum[x] + 1) % 3 != sum[y]) {
ans++;
}
} else {
if (siz[yy] > siz[xx]) {
swap(xx, yy);
swap(x, y);
}
fa[yy] = xx;
siz[xx] += siz[yy];
val[yy] = 3 - sum[x];
}
}
}
cout << ans << "\n";
return 0;
}