#define rep(i,n) for(int i=0;i<(int)(n);i++) #define ALL(v) v.begin(),v.end() typedef long long ll; #include using namespace std; template struct BIT{ int n; vector bit[2]; BIT(int n_){init(n_);} void init(int n_){ n=n_+1; for(int p=0;p < 2;p++) bit[p].assign(n,0); } void add_sub(int p,int i,T x){ for(int idx=i;idx0;idx-=(idx & -idx)){ s+=bit[p][idx]; } return s; } T sum(int i){return sum_sub(0,i)+sum_sub(1,i)*i;} T sum(int i,int j){ //[i,j]の要素の総和 return sum(j)-sum(i-1); } }; int main(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); int n; string s; cin>>n>>s; BIT bit(n),bit1(n); ll ans=0; ll cnt=0; for(int i=n-1;i>=0;i--){ if(s[i]=='C'){ cnt++; } else{ ans+=cnt; bit.add(i+1,i+1,1); } bit1.add(i+1,i+1,cnt); } ll now=ans; for(int i=n-1;i>=0;i--){ if(s[i]=='?'){ now-=bit1.sum(i+1,i+1); bit1.add(1,i,1); now+=bit.sum(1,i); } ans=max(ans,now); } cout<