#include<bits/stdc++.h>
using namespace std;
const int N=133340;
int n,k,cnt[N],a[N],num=0;
int ans[N];
struct query{
int id,l,r,t;
}q[N];
struct update{
int pl,pre,suc;
}p[N];
inline bool cmp(query x,query y){
if((x.l/k)>(y.l/k))return 0;
if((x.l/k)<(y.l/k))return 1;
if((x.r/k)>(y.r/k))return 0;
if((x.r/k)<(y.r/k))return 1;
return x.t<y.t;
}
inline void add(int x){if(++cnt[a[x]]==1)num++;}
inline void del(int x){if(--cnt[a[x]]==0)num--;}
int main(){
int m,i,ln=0,tn=0,cl=0,cr=0,ct=0,l,r,t;
char op;
scanf("%d%d",&n,&m);
k=sqrt(n);
for(i=1;i<=n;i++)scanf("%d",a+i);
for(i=1;i<=m;i++){
cin>>op;
scanf("%d%d",&l,&r);
if(op=='R'){
tn++;
p[tn].pl=l;
p[tn].suc=r;
p[tn].pre=a[p[tn].pl];
a[p[tn].pl]=r;
}else{
ln++;
q[ln].id=ln;
q[ln].l=l;
q[ln].r=r;
q[ln].t=tn;
}
}
for(i=tn;i>=1;i--)a[p[i].pl]=p[i].pre;
sort(q+1,q+ln+1,cmp);
for(i=1;i<=m;i++){
l=q[i].l;r=q[i].r;t=q[i].t;
while(cl<l)del(cl++);
while(cl>l)add(--cl);
while(cr<r)add(++cr);
while(cr>r)del(cr--);
while(ct<t){
ct++;
if(l<=p[ct].pl&&p[ct].pl<=r)del(p[ct].pl);
a[p[ct].pl]=p[ct].suc;
if(l<=p[ct].pl&&p[ct].pl<=r)add(p[ct].pl);
}
while(ct>t){
if(l<=p[ct].pl&&p[ct].pl<=r)del(p[ct].pl);
a[p[ct].pl]=p[ct].pre;
if(l<=p[ct].pl&&p[ct].pl<=r)add(p[ct].pl);
ct--;
}
ans[q[i].id]=num;
}
for(i=1;i<=ln;i++)printf("%d\n",ans[i]);
return 0;
}