include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int n, m;
int x[N], y[N], z[N];
int b[N], f[N];
int find (int x)
{
int y = x;
while (f[x] != x)
x = f[x];
f[y] = x;
return x;
}
void merge (int x, int y)
{
int a = find(x), b = find(y);
if (b != a)
f[b] = a;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
int len = 0;
for (int i = 1; i <= m; i++)
{
cin >> x[i] >> y[i];
x[i]--;
string s;
cin >> s;
if (s == "odd")
z[i] = 1;
b[++len] = x[i];
b[++len] = y[i];
}
sort(b + 1, b + len + 1);
len = unique(b + 1, b + len + 1) - b - 1;
for (int i = 1; i <= len * 2; i++)
f[i] = i;
for (int i = 1; i <= m; i++)
{
// if (x[i] > n || x[i] < 1 || y[i] > n || y[i] < 1)
// {
// cout << i - 1;
// return 0;
// }
x[i] = lower_bound(b + 1, b + len + 1, x[i]) - b;
y[i] = lower_bound(b + 1, b + len + 1, y[i]) - b;
if (z[i] == 0){int a = find(x[i]), b = find(y[i] + len);if (a == b){cout << i - 1;return 0;}else{merge(x[i], y[i] );merge(x[i] + len, y[i] + len );}}else{int a = find(x[i]), b = find(y[i]);if (a == b){cout << i - 1;return 0;}else{merge(x[i] + len, y[i]);merge(x[i], y[i] + len);}}
}
cout << m;
return 0;
}