#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
****************************************************************/