#include<bits/stdc++.h>
using namespace std;
int l,t,o,id[100010],col[10010];
set <int> sum[100010];
int main()
{
scanf("%d%d%d",&l,&t,&o);
int len=sqrt(l),cnt=ceil(l/len);
for(int i=1;i<=l;i++)
id[i]=(i-1)/len+1;
for(int i=1;i<=l;i++)col[i]=1;
for(int i=1;i<=cnt;i++)
sum[i].insert(1);
while(o--)
{
char opt;
scanf(" %c",&opt);
if(opt=='C')
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
for(int i=min(a,b);i<=max(a,b);i++)col[i]=c;
if(id[a]==id[b])
{
if(min(a,b)==len*(id[a]-1)+1&&max(a,b)==len*id[a])
sum[id[a]].clear();
sum[id[a]].insert(c);
continue;
}
sum[id[min(a,b)]].insert(c);
for(int i=id[min(a,b)]+1;i<id[max(a,b)];i++)
sum[i].clear(),sum[i].insert(c);
sum[id[max(a,b)]].insert(c);
continue;
}
int a,b;
scanf("%d%d",&a,&b);
if(id[a]==id[b])
{
if(min(a,b)==len*(id[a]-1)+1&&max(a,b)==len*id[a])
{
printf("%d\n",sum[id[a]].size());
continue;
}
bool vis[40];
int ans=0;
memset(vis,0,sizeof(vis));
for(int i=min(a,b);i<=max(a,b);i++)
vis[col[i]]=1;
for(int i=1;i<=t;i++)
if(vis[i])
ans++;
printf("%d\n",ans);
continue;
}
bool vis[40];
int ans=0;
memset(vis,0,sizeof(vis));
for(int i=min(a,b);i<=len*id[min(a,b)];i++)
vis[col[i]]=1;
for(int i=id[min(a,b)]+1;i<id[max(a,b)];i++)
for(set <int>::iterator it=sum[i].begin();it!=sum[i].end();it++)
vis[*it]=1;
for(int i=len*(id[max(a,b)]-1)+1;i<=max(a,b);i++)
vis[col[i]]=1;
for(int i=1;i<=t;i++)
if(vis[i])
ans++;
printf("%d\n",ans);
}
}