#include <bits/stdc++.h>
using namespace std;
#define file "PARITY"
#define ff(i, a, b) for(auto i=(a); i<=(b); ++i)
#define ffr(i, b, a) for(auto i=(b); i>=(a); --i)
#define nl "\n"
#define ss " "
#define mp make_pair
//#define pb push_back
#define pb emplace_back
#define fi first
#define se second
#define sz(s) (int)s.size()
#define all(s) (s).begin(), (s).end()
#define ms(a,x) memset(a, x, sizeof (a))
#define cn continue
#define re exit(0)
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<pii> vpii;
typedef vector<pll> vpll;
const int mod=1e9+7;
const int maxn=1e5+15;
const int maxm=4*maxn+15;
const ll inf=1e18;
void rf(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
if(fopen(file".inp","r")){
freopen(file".inp","r",stdin); freopen(file".out","w",stdout);
}
}
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll ran(ll l, ll r)
{
return uniform_int_distribution<ll> (l, r)(rng);
}
template<typename T> void add(T &x, const T &y)
{
x+=y;
if(x>=mod) x-=mod;
if(x<0) x+=mod;
}
template<typename T> bool maxi(T &a, T b)
{
if(a>=b) return 0;
a=b; return 1;
}
template<typename T> bool mini(T &a, T b)
{
if(a<=b) return 0;
a=b; return 1;
}
int n, m;
struct queries{int op, l, r;} a[maxn];
vi v;
int par[maxn], sz[maxn];
int fp(int u)
{
if(u==par[u]) return u;
return par[u]=fp(par[u]);
}
void unite(int u, int v)
{
u=fp(u); v=fp(v);
if(u==v) return;
if(sz[u]<sz[v]) swap(u, v);
sz[u]+=sz[v]; par[v]=u;
return;
}
bool lt(int u, int v)
{
return fp(u)==fp(v);
}
signed main()
{
rf();
cin>>n>>m;
ff(i, 1, m)
{
string op; int l, r;
cin>>l>>r>>op;
if(op=="even") a[i]={0, l, r};
else a[i]={1, l, r};
v.pb(l); v.pb(r);
}
sort(all(v)); v.erase(unique(all(v)), v.end());
ff(i, 1, m)
{
int &l=a[i].l, &r=a[i].r;
l=upper_bound(all(v), l)-v.begin();
r=upper_bound(all(v), r)-v.begin();
}
int cur=sz(v)+1;
ff(i, 0, cur+cur) par[i]=i, sz[i]=1;
ff(i, 1, m)
{
int op, l, r;
op=a[i].op; l=a[i].l, r=a[i].r;
--l;
if(op==0)
{
if(lt(l, r+cur) || lt(l+cur, r)) return cout<<i-1, 0;
unite(l, r); unite(l+cur, r+cur);
}
else
{
if(lt(l, r) || lt(l+cur, r+cur)) return cout<<i-1, 0;
unite(l, r+cur); unite(l+cur, r);
}
}
cout<<m;
re;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGZpbGUgIlBBUklUWSIKI2RlZmluZSBmZihpLCBhLCBiKSBmb3IoYXV0byBpPShhKTsgaTw9KGIpOyArK2kpCiNkZWZpbmUgZmZyKGksIGIsIGEpIGZvcihhdXRvIGk9KGIpOyBpPj0oYSk7IC0taSkKI2RlZmluZSBubCAiXG4iCiNkZWZpbmUgc3MgIiAiCiNkZWZpbmUgbXAgbWFrZV9wYWlyCi8vI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHN6KHMpIChpbnQpcy5zaXplKCkKI2RlZmluZSBhbGwocykgKHMpLmJlZ2luKCksIChzKS5lbmQoKQojZGVmaW5lIG1zKGEseCkgbWVtc2V0KGEsIHgsIHNpemVvZiAoYSkpCiNkZWZpbmUgY24gY29udGludWUKI2RlZmluZSByZSBleGl0KDApCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHZlY3RvcjxsbD4gdmxsOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IHBpaTsKdHlwZWRlZiBwYWlyPGxsLCBsbD4gcGxsOwp0eXBlZGVmIHZlY3RvcjxwaWk+IHZwaWk7CnR5cGVkZWYgdmVjdG9yPHBsbD4gdnBsbDsKCmNvbnN0IGludCBtb2Q9MWU5Kzc7CmNvbnN0IGludCBtYXhuPTFlNSsxNTsKY29uc3QgaW50IG1heG09NCptYXhuKzE1Owpjb25zdCBsbCBpbmY9MWUxODsKCnZvaWQgcmYoKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsgY291dC50aWUobnVsbHB0cik7CiAgICBpZihmb3BlbihmaWxlIi5pbnAiLCJyIikpewogICAgICAgIGZyZW9wZW4oZmlsZSIuaW5wIiwiciIsc3RkaW4pOyBmcmVvcGVuKGZpbGUiLm91dCIsInciLHN0ZG91dCk7CiAgICB9Cn0KCm10MTk5MzdfNjQgcm5nKGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CmxsIHJhbihsbCBsLCBsbCByKQp7CiAgICByZXR1cm4gdW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGxsPiAobCwgcikocm5nKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGQoVCAmeCwgY29uc3QgVCAmeSkKewogICAgeCs9eTsKICAgIGlmKHg+PW1vZCkgeC09bW9kOwogICAgaWYoeDwwKSB4Kz1tb2Q7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgbWF4aShUICZhLCBUIGIpCnsKICAgIGlmKGE+PWIpIHJldHVybiAwOwogICAgYT1iOyByZXR1cm4gMTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBtaW5pKFQgJmEsIFQgYikKewogICAgaWYoYTw9YikgcmV0dXJuIDA7CiAgICBhPWI7IHJldHVybiAxOwp9CgppbnQgbiwgbTsKc3RydWN0IHF1ZXJpZXN7aW50IG9wLCBsLCByO30gYVttYXhuXTsKdmkgdjsKaW50IHBhclttYXhuXSwgc3pbbWF4bl07CmludCBmcChpbnQgdSkKewogICAgaWYodT09cGFyW3VdKSByZXR1cm4gdTsKICAgIHJldHVybiBwYXJbdV09ZnAocGFyW3VdKTsKfQoKdm9pZCB1bml0ZShpbnQgdSwgaW50IHYpCnsKICAgIHU9ZnAodSk7IHY9ZnAodik7CiAgICBpZih1PT12KSByZXR1cm47CiAgICBpZihzelt1XTxzelt2XSkgc3dhcCh1LCB2KTsKICAgIHN6W3VdKz1zelt2XTsgcGFyW3ZdPXU7CiAgICByZXR1cm47Cn0KCmJvb2wgbHQoaW50IHUsIGludCB2KQp7CiAgICByZXR1cm4gZnAodSk9PWZwKHYpOwp9CgpzaWduZWQgbWFpbigpCnsKICAgIHJmKCk7CiAgICBjaW4+Pm4+Pm07CiAgICBmZihpLCAxLCBtKQogICAgewogICAgICAgIHN0cmluZyBvcDsgaW50IGwsIHI7CiAgICAgICAgY2luPj5sPj5yPj5vcDsKICAgICAgICBpZihvcD09ImV2ZW4iKSBhW2ldPXswLCBsLCByfTsKICAgICAgICBlbHNlIGFbaV09ezEsIGwsIHJ9OwogICAgICAgIHYucGIobCk7IHYucGIocik7CiAgICB9CiAgICBzb3J0KGFsbCh2KSk7IHYuZXJhc2UodW5pcXVlKGFsbCh2KSksIHYuZW5kKCkpOwogICAgZmYoaSwgMSwgbSkKICAgIHsKICAgICAgICBpbnQgJmw9YVtpXS5sLCAmcj1hW2ldLnI7CiAgICAgICAgbD11cHBlcl9ib3VuZChhbGwodiksIGwpLXYuYmVnaW4oKTsKICAgICAgICByPXVwcGVyX2JvdW5kKGFsbCh2KSwgciktdi5iZWdpbigpOwogICAgfQogICAgaW50IGN1cj1zeih2KSsxOwogICAgZmYoaSwgMCwgY3VyK2N1cikgcGFyW2ldPWksIHN6W2ldPTE7CiAgICBmZihpLCAxLCBtKQogICAgewogICAgICAgIGludCBvcCwgbCwgcjsKICAgICAgICBvcD1hW2ldLm9wOyBsPWFbaV0ubCwgcj1hW2ldLnI7CiAgICAgICAgLS1sOwogICAgICAgIGlmKG9wPT0wKQogICAgICAgIHsKICAgICAgICAgICAgaWYobHQobCwgcitjdXIpIHx8IGx0KGwrY3VyLCByKSkgcmV0dXJuIGNvdXQ8PGktMSwgMDsKICAgICAgICAgICAgdW5pdGUobCwgcik7IHVuaXRlKGwrY3VyLCByK2N1cik7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGlmKGx0KGwsIHIpIHx8IGx0KGwrY3VyLCByK2N1cikpIHJldHVybiBjb3V0PDxpLTEsIDA7CiAgICAgICAgICAgIHVuaXRlKGwsIHIrY3VyKTsgdW5pdGUobCtjdXIsIHIpOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQ8PG07CiAgICByZTsKfQo=