#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int pre[5005*2];
int ran[5005*2];
int num[5005*2];
int a[5005],b[5005];
char ch[5005][10];
int n,cnt;
void init(){
for(int i = 0; i < cnt; i++){
pre[i] = i;
ran[i] = 0;
}
}
int findl(int x){
int l = 0,r = cnt-1;
while(l <= r){
int mid = (l+r)>>1;
if(num[mid] == x)return mid;
else if(num[mid] > x){
r = mid-1;
}
else l = mid+1;
}
}
int find(int x){
if(pre[x] == x)
return pre[x];
int fx = pre[x];
pre[x] = find(pre[x]);
ran[x] += ran[fx];
ran[x] %= 2;
return pre[x];
}
int main(){
int T,x,y,d;
bool flag = 0;
scanf("%d%d",&n,&T);
int ans = T;
cnt = 0;
for(int i = 0; i < T; i++){
scanf("%d%d%s",&a[i],&b[i],ch[i]);
num[cnt++] = --a[i];
num[cnt++] = b[i];
}
sort(num,num+cnt);
cnt = unique(num,num+cnt) - num;
init();
for(int i = 0; i < T; i++){
x = findl(a[i]);
y = findl(b[i]);
if(ch[i][0] == 'e')
d = 0;
else d = 1;
int fx = find(x);
int fy = find(y);
if(fx == fy){
if((ran[x] - ran[y] + 2) % 2 != d && !flag){
flag = 1;ans = i;
}
}
else {
pre[fx] = fy;
ran[fx] = (ran[y] - ran[x] + 2 + d) % 2;
}
}
printf("%d
",ans);
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int pre[5005*2];
int ran[5005*2];
int num[5005*2];
int a[5005],b[5005];
char ch[5005][10];
int n,cnt;
void init(){
for(int i = 0; i < cnt; i++){
pre[i] = i;
ran[i] = 0;
}
}
int findl(int x){
int l = 0,r = cnt-1;
while(l <= r){
int mid = (l+r)>>1;
if(num[mid] == x)return mid;
else if(num[mid] > x){
r = mid-1;
}
else l = mid+1;
}
}
int find(int x){
if(pre[x] == x)
return pre[x];
int fx = pre[x];
pre[x] = find(pre[x]);
ran[x] ^= ran[fx];
return pre[x];
}
int main(){
int T,x,y,d;
bool flag = 0;
scanf("%d%d",&n,&T);
int ans = T;
cnt = 0;
for(int i = 0; i < T; i++){
scanf("%d%d%s",&a[i],&b[i],ch[i]);
num[cnt++] = --a[i];
num[cnt++] = b[i];
}
sort(num,num+cnt);
cnt = unique(num,num+cnt) - num;
init();
for(int i = 0; i < T; i++){
x = findl(a[i]);
y = findl(b[i]);
if(ch[i][0] == 'e')
d = 0;
else d = 1;
int fx = find(x);
int fy = find(y);
if(fx == fy){
if(ran[x]^ran[y] != d && !flag){
flag = 1;ans = i;
}
}
else {
pre[fx] = fy;
ran[fx] = ran[y]^ran[x]^d;
}
}
printf("%d
",ans);
return 0;
}