#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int f[5000];
char p[10];

int find(int v){
if(f[v]==v)return v;
int F = find(f[v]);
f[v] = F;
return F;
}

void union1(int x, int y){
x = find(x);
y = find(y);
f[x] = y;
}

int main()
{
    int n, m, z, k = 0;
    while(scanf("%d%d",&n,&m) != EOF){
        for(int i = 1;i <= 2 * n; i++){
            f[i] = i;
        }
        for(int i = 1;i <= m; i++){
            int x, y;
            scanf("%s %d %d",p,&x,&y);
            if(p[0] == 'F'){
                union1(x, y);
            }
            else {
                union1(x, y + n);
                union1(y, x + n);
            }
        }
        for(int i = 1;i <= n; i++){
            f[i] = find(i);
        }
        for(int i = 1;i < n; i++){
            for(int j = 1;j <= n - i; j++){
                if(f[j] > f[j + 1]){
                    z = f[j];
                    f[j] = f[j + 1];
                    f[j + 1] = z;
                }
            }
        }
        for(int i = 1;i <= n; i++){
            if(f[i] != f[i - 1])k++;
        }
        printf("%d\n",k);
    }

    return 0;
}
/**************************************************************
	Problem: 2243
	User: admin
	Language: C
	Result: Accepted
	Time:67 ms
	Memory:1164 kb
****************************************************************/