#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
const int M=31;
int l,t,o;
int num,lt[N],rt[N],in[N],g1[N];
bool vis[M];
set<int> g2[N];
void block(){
num=sqrt(l);
if(num*num!=l) ++num;
int lar=num;
if(num*(num-1)>=l&&num*num!=l) --lar;
for(int i=1;i<num;i++){
lt[i]=rt[i-1]+1;
rt[i]=i*lar;
}
lt[num]=rt[num-1]+1;
rt[num]=l;
for(int i=1;i<=rt[num-1];i++){
in[i]=(i-1)/lar+1;
}
for(int i=lt[num];i<=l;i++){
in[i]=num;
}
}
void update(int a,int b,int c){
if(a==lt[in[a]]&&b==rt[in[b]]){
g2[in[a]].clear();
g2[in[a]].insert(c);
return;
}
if(g2[in[a]].size()==1){
int now=*g2[in[a]].begin();
if(now==c) return;
g2[in[a]].insert(c);
for(int i=lt[in[a]];i<a;i++){
g1[i]=now;
}
for(int i=a;i<=b;i++){
g1[i]=c;
}
for(int i=b+1;i<=rt[in[b]];i++){
g1[i]=now;
}
return;
}
g2[in[a]].clear();
for(int i=lt[in[a]];i<a;i++){
g2[in[i]].insert(g1[i]);
}
for(int i=a;i<=b;i++){
g1[i]=c;
}
g2[in[a]].insert(c);
for(int i=b+1;i<=rt[in[b]];i++){
g2[in[i]].insert(g1[i]);
}
return;
}
void change(int a,int b,int c){
if(in[a]==in[b]){
update(a,b,c);
return;
}
update(a,rt[in[a]],c);
for(int i=in[a]+1;i<in[b];i++){
g2[i].clear();
g2[i].insert(c);
}
update(lt[in[b]],b,c);
}
int query(int a,int b){
int res=0;
if(g2[in[a]].size()==1){
if(!vis[*g2[in[a]].begin()]) res=1;
vis[*g2[in[a]].begin()]=1;
return res;
}
for(int i=a;i<=b;i++){
if(!vis[g1[i]]) ++res;
vis[g1[i]]=1;
}
return res;
}
int ask(int a,int b){
memset(vis,0,sizeof(vis));
if(in[a]==in[b]) return query(a,b);
int res=query(a,rt[in[a]])+query(lt[in[b]],b);
for(int i=in[a]+1;i<in[b];i++){
set<int>::iterator it;
for(it=g2[i].begin();it!=g2[i].end();it++){
if(!vis[*it]) ++res;
vis[*it]=1;
}
}
return res;
}
inline int read(){
int s=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
s=(s<<3)+(s<<1)+(ch^48);
ch=getchar();
}
return s*f;
}
int main(){
l=read(),t=read(),o=read();
block();
for(int i=1;i<=l;i++){
g1[i]=1;
}
change(1,l,1);
for(int i=1;i<=o;i++){
char op;cin>>op;
int a=read(),b=read();
if(a>b) swap(a,b);
if(op=='C'){
int c=read();
change(a,b,c);
continue;
}
printf("%d\n",ask(a,b));
}
return 0;
}