← Home
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
char s[N];
int n,tot,p[N],pre[N],cnt,d[N],f[N];
inline bool empty(int l,int r){return l>r||pre[l-1]==pre[r];}
inline bool check(int t){
	f[0]=0;
	for(int i=1;i<=tot;++i){
		int x=p[i];
		f[i]=0;
		if(empty(f[i-1]+1,x-1)) f[i]=max(f[i],x+t);
		if(empty(f[i-1]+1,x-t-1)) f[i]=max(f[i],x);
		if(i>1&&empty(f[i-2]+1,x-t-1)) f[i]=max(f[i],p[i-1]+t);
	}
	return f[tot]>=d[cnt];
}
int main(){
	scanf("%d",&n);
	scanf("%s",s+1);
	for(int i=1;i<=n;++i){
		if(s[i]=='*') pre[i]=pre[i-1]+1,d[++cnt]=i;
		else pre[i]=pre[i-1];
		if(s[i]=='P') p[++tot]=i;
	}
	if(!tot){puts("0 0");return 0;}
	if(tot==1){
		int x=p[1];
		if(pre[x]>cnt-pre[x]) printf("%d %d\n",pre[x],x-d[1]);
		else if(pre[x]<cnt-pre[x]) printf("%d %d\n",cnt-pre[x],d[cnt]-x);
		else printf("%d %d\n",pre[x],min(x-d[1],d[cnt]-x));
		return 0;
	}
	int l=0,r=n,ans=0;
	while(l<=r){
		int mid=(l+r)>>1;
		if(check(mid)) ans=mid,r=mid-1;
		else l=mid+1;
	}
	printf("%d %d\n",cnt,ans);
	return 0;
}