#include<bits/stdc++.h>
using namespace std;
int l,t,o,a,b,c,s,p[100001],q[3333];
void change(int l,int r,int x){
int lid=(l-1)/s+1,rid=(r-1)/s+1;
if(q[lid])
for(int i=(lid-1)*s+1;i<=lid*s;i++)
p[i]=q[lid];
q[lid]=0;
if(q[rid])
for(int i=(rid-1)*s+1;i<=min(rid*s,l);i++)
p[i]=q[rid];
q[rid]=0;
if(lid==rid){
for(int i=l;i<=r;i++)p[i]=x;
return ;
}
for(int i=l;i<=lid*s;i++)p[i]=x;
for(int i=lid+1;i<rid;i++)q[i]=x;
for(int i=(rid-1)*s+1;i<=r;i++)p[i]=x;
}
int query(int l,int r){
int lid=(l-1)/s+1,rid=(r-1)/s+1;
if(q[lid])
for(int i=(lid-1)*s+1;i<=lid*s;i++)
p[i]=q[lid];
q[lid]=0;
if(q[rid])
for(int i=(rid-1)*s+1;i<=min(rid*s,l);i++)
p[i]=q[rid];
q[rid]=0;
long long ans=0;
bool vis[33]={0};
if(lid==rid){
for(int i=l;i<=r;i++)
if(!vis[p[i]])ans++,vis[p[i]]=1;
return ans;
}
for(int i=l;(i-1)/s+1==lid;i++)
if(!vis[p[i]])ans++,vis[p[i]]=1;
for(int i=lid+1;i<rid;i++)
if(q[i])if(!vis[q[i]])ans++,vis[q[i]]=1;
else for(int j=(i-1)*s+1;j<=i*s;j++)
if(!vis[p[j]])ans++,vis[p[j]]=1;
for(int i=(rid-1)*s+1;i<=r;i++)
if(!vis[p[i]])ans++,vis[p[i]]=1;
return ans;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>l>>t>>o;
s=sqrt(l)+1;
for(int i=1;i<=l;i++)p[i]=1;
for(int i=1;i<=s;i++)q[i]=1;
while(o--){
char ch[4];
cin>>ch>>a>>b;
if(a>b)swap(a,b);
if(*ch=='C'){cin>>c;change(a,b,c);}
else cout<<query(a,b)<<'\n';
}
return 0;
}