#include<bits/stdc++.h>
#define pb push_back
#define ll long long
#define endl '\n'
#define itn int
#define pi pair<int,int>
using namespace std;
const int MOD1=1e9+7;
const int MOD2=998244353;
const int N=1e5+5;
int n,m,q,tag[N<<2][31],sum[N<<2][31];
void push_up(int p,int x){
sum[p][x]=sum[p<<1][x]+sum[p<<1|1][x];
}
void push_down(int p,int l,int r,itn x){
if(tag[p][x]!=0){
if(tag[p][x]==-1){
sum[p<<1][x]=0;
sum[p<<1|1][x]=0;
tag[p<<1][x]=-1;
tag[p<<1|1][x]=-1;
}
else{
sum[p<<1][x]=tag[p][x];
sum[p<<1|1][x]=tag[p][x];
tag[p<<1][x]=tag[p][x];
tag[p<<1|1][x]=tag[p][x];
}
tag[p][x]=0;
}
}
void build(int p,int l,int r,int x){
if(l==r){
sum[p][x]=1;
return;
}
int mid=l+r>>1;
build(p<<1,l,mid,x);
build(p<<1|1,mid+1,r,x);
push_up(p,x);
}
void update(int p,int l,int r,int ql,int qr,int k,int x){
if(ql<=l and r<=qr){
sum[p][x]=k;
tag[p][x]=(k?k:-1);
return;
}
push_down(p,l,r,x);
int mid=l+r>>1;
if(ql<=mid)update(p<<1,l,mid,ql,qr,k,x);
if(qr>mid)update(p<<1|1,mid+1,r,ql,qr,k,x);
push_up(p,x);
}
int query(int p,int l,itn r,int ql,int qr,int x){
if(ql<=l and r<=qr)return sum[p][x];
push_down(p,l,r,x);
int mid=l+r>>1;
int res=0;
if(ql<=mid)res+=query(p<<1,l,mid,ql,qr,x);
if(qr>mid)res+=query(p<<1|1,mid+1,r,ql,qr,x);
return res;
}
inline void Solve(){
cin>>n>>m>>q;
for(int i=1;i<=m;i++)
build(1,1,n,i);
while(q--){
char op;
int a,b,c;
cin>>op>>a>>b;
if(a>b)swap(a,b);
if(op=='C'){
cin>>c;
for(int i=1;i<=m;i++)
if(i==c)update(1,1,n,a,b,1,i);
else update(1,1,n,a,b,0,i);
}
if(op=='P'){
int res=0;
for(int i=1;i<=m;i++)
res+=query(1,1,n,a,b,i)?1:0;
cout<<res<<endl;
}
}
}
signed main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int T=1;
while(T--)
Solve();
return 0;
}