#include <bits/stdc++.h>
using namespace std;
long long l,t,T,x,y,z,d[400005],la[400005];
char op;
void push_up(long long p){
d[p]=d[p<<1]|d[p<<1|1];
}
void push_down(long long p,long long l,long long r,long long mid){
if(la[p]!=0){
d[p<<1]=d[p<<1|1]=la[p<<1|1]=la[p<<1]=la[p];
la[p]=0;
}
}
void build(long long l,long long r,long long p){
if(l==r){
d[p]=1;
return;
}
long long mid=(l+r)>>1;
build(l,mid,p<<1);
build(mid+1,r,p<<1|1);
push_up(p);
}
void update(long long l,long long r,long long p,long long ad,long long s,long long t){
if(l>=s&&r<=t){
la[p]=d[p]=ad;
return;
}
long long mid=(l+r)>>1;
push_down(p,l,r,mid);
if(s<=mid) update(l,mid,p<<1,ad,s,t);
if(t>mid) update(mid+1,r,p<<1|1,ad,s,t);
push_up(p);
}
long long getsum(long long l,long long r,long long p,long long s,long long t){
if(l>=s&&r<=t){
return d[p];
}
long long mid=(l+r)>>1,ans=0;
push_down(p,l,r,mid);
if(s<=mid) ans=ans|getsum(l,mid,p<<1,s,t);
if(t>mid) ans=ans|getsum(mid+1,r,p<<1|1,s,t);
return ans;
}
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>l>>t>>T;
build(1,l,1);
while(T--){
cin>>op;
if(op=='C'){
cin>>x>>y>>z;
if(x>y) swap(x,y);
update(1,l,1,1<<z,x,y);
}
if(op=='P'){
cin>>x>>y;
if(x>y) swap(x,y);
long long tot=0,z=getsum(1,l,1,x,y);
for(int i=0;i<=t;i++) if(z&(1<<i)) tot++;
cout<<tot<<endl;
}
}
return 0;
}