#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxN=1e7+10;
int fa[maxN],a[maxN];
int c,t;
int find(int x){
if(x==fa[x])return x;
else return fa[x]=find(fa[x]);
}
void merge(int x,int y){
int xx=find(x);
int yy=find(y);
fa[yy]=xx;
}
signed main(){
cin >> c >> t;
while(t--){
int n,m;
cin >> n >> m;
for(int i=1;i<=2*n+10;i++){
fa[i]=i;
}
for(int i=1;i<=n;i++){
a[i]=i;
}
merge(n+2,n*2+4);
while(m--){
int x,y;
string s;
cin >> s;
if(s == "+"){
cin >> x >> y;
a[x] = a[y];
}
if(s == "-"){
cin >> x >> y;
a[x] = -a[y];
}
if(s == "T"){
cin >> x ;
a[x] = n+1;
}
if(s == "U"){
cin >> x;
a[x] = n+2;
}
if(s == "F"){
cin >> x;
a[x] = n*2+3;
}
}
for(int i=1;i<=n;i++){
if(a[i]>0){
merge(i,a[i]);
merge(i +n+2,a[i]+n+2);
}
else{
merge(i,-a[i]+n+2);
merge(i+n+2,-a[i]);
}
}
int ans=0;
for(int i=1;i<=n;i++){
if(find(i) == find(i+n+2))ans++;
}
cout << ans << endl;
}
return 0;
}