#include <map>
#include <set>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <vector>
#include <cassert>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <sstream>
#include <iostream>
#include <algorithm>

using namespace std;

#define mp make_pair
#define pb push_back
#define ll long long
#define fi first
#define se second

#define all(a) a.begin(),a.end()
#define fill(a,v) memset(a,v,sizeof(a))

#define bitcount __buitin_popcount
#define gcd __gcd


typedef vector<int> vi;
typedef pair<int,int> pii;
typedef vector<vi > vvi;

map<pii,pii> dad;
map<pii,ll> rnk;
void UNION(pii x,pii y)
{
    if(rnk[x] > rnk[y])
        dad[y] = x;
    else
    {
        dad[x] = y;
        if(rnk[y] == rnk[x])
            rnk[x]++;
    }
}
pii FIND(pii x)
{
    if(dad[x] != x)
    {
        dad[x] = FIND(dad[x]);
    }
    else return x;
}
int main()
{
   

    ll n;
    while(cin >> n)
    {
        if(n == -1) return 0;

        int m;cin >> m;
        pii query[m];
        string parity[m];

        for(int i = 0 ; i < m ; ++i)
        {
            cin >> query[i].fi >> query[i].se;
            cin >> parity[i];
        }

          int cnt = 0;
         for(int i = 0 ; i < m ; ++i)
         {
            int x = query[i].fi,y = query[i].se;
            pii s= mp(x-1,0),s1 = mp(x-1,1),d = mp(y,0),d1 = mp(y,1);
            dad[s] = s;
            rnk[s] = 0;
            dad[s1] = s1;
            rnk[s1] = 0;
            dad[d] = d;rnk[d] = 0;
            dad[d1] = d1;rnk[d1] = 0;
         }
        for(int i = 0 ; i < m ; ++i)
        {
            int x = query[i].fi,y = query[i].se;
            pii s= mp(x-1,0),s1 = mp(x-1,1),d = mp(y,0),d1 = mp(y,1);

            if(parity[i] == "even")
            {
                UNION(FIND(s),FIND(d));
                UNION(FIND(s1),FIND(d1));
            }
            else
            {
                UNION(FIND(s1),FIND(d));
                UNION(FIND(s),FIND(d1));
            }
           
             if(FIND(s) == FIND(s1)) goto p;
             else if(FIND(d) == FIND(d1) ) goto p;
             cnt++;
        }

        p: cout << cnt << endl;
    }

    return 0;
}
