#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int n, m, ans, fa [N * 3];
int find (int x) {
return x == fa [x] ? x : (fa [x] = find (fa [x]));
}
void Merge1 (int x, int y) {
if (x > n || y > n) {
ans ++;
return ;
}
if (find(x + n) == find(y) || find(y) == find(x + n))
ans ++;
else
fa [find (x)] = find (y),
fa [find (x + n)] = find (y + n),
fa [find (x + n + n)] = find (y + n + n);
}
void Merge2 (int x, int y) {
if (x == y || x > n || y > n) {
ans ++;
return ;
}
if (find(x) == find(y) || find(x) == find(y + n))
ans ++;
else
fa [find (x + n)] = find (y),
fa [find (x + n + n)] = find (y + n),
fa [find (x)] = find (y + n + n);
}
int main() {
cin >> n >> m;
for (int i = 0 ; i < 3 * n ; i ++)
fa [i] = i;
while (m --) {
int opt, x, y;
cin >> opt >> x >> y;
if (opt == 1) {
Merge1 (x, y);
} else {
Merge2 (x, y);
}
}
cout << ans;
return 0;
}