#include<cstdio>
using namespace std;
const int N=5005;
int f[N],ans[N];
int find(int x)
{
if(f[x]==x)return x;
else return f[x]=find(f[x]);
}
void Merge(int x,int y)
{
int t1=find(x);
int t2=find(y);
if(t1!=t2)f[t1]=t2;
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n*2;i++)f[i]=i;
while(m--)
{
char opt[2];
scanf("%s",opt+1);
if(opt[1]=='F')
{
int x,y;
scanf("%d%d",&x,&y);
Merge(x,y);
}
if(opt[1]=='E')
{
int x,y;
scanf("%d%d",&x,&y);
Merge(x+n,y);
Merge(y+n,x);
}
}
int sum=0;
for(int i=1;i<=n;i++)
{
int y=find(i);
if(ans[y]==0)
{
ans[y]=1;
sum++;
}
}
printf("%d",sum);
return 0;
}
错的数据,本地跑数据输出一样