#include"bits/stdc++.h"
using namespace std;
using ll=long long;
#define S second
#define F first
const int N=1<<20;
struct node{int a,b,s,mn,mx;}tn[N*2];
node mrg(node l,node r){
return node{
max(l.a,-r.mn)+r.s,
max(l.b,r.mx)-r.s,
l.s+r.s,
min(l.mn,l.s+r.mn),
max(l.mx,l.s+r.mx)
};
}
node qry(int i,int l,int r,int ql,int qr){
if(l>qr||r<ql)return node{0,0,0,0};
if(ql<=l&&r<=qr)return tn[i];
int m=(l+r)/2;
return mrg(qry(i*2,l,m,ql,qr),qry(i*2+1,m+1,r,ql,qr));
}
int main(){
cin.tie(0)->sync_with_stdio(0);
int n,q;
string s;
cin>>n>>q>>s;
for(int i=0;i<n;i++){
if(s[i]=='P')tn[i+N]=node{1,0,1,1,1};
else tn[i+N]=node{0,1,-1,-1,-1};
}
for(int i=N-1;i>0;i--)tn[i]=mrg(tn[i*2],tn[i*2+1]);
while(q--){
int l,r;
cin>>l>>r;
auto res=qry(1,0,N-1,l-1,l-1);
for(int i=l;i<r;i++){
res=mrg(res,qry(1,0,N-1,i,i));
}
cout<<res.a+res.b<<'\n';
}
}