P2704
WA
#include <bits/stdc++.h>
using namespace std;
vector<int> q;
char a[101][101];
int s[1000001],f[101][1001][1001];
int main()
{
int n,m,ans=0;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=0;j<m;j++)
{
cin>>a[i][j];
s[i]|=(a[i][j]=='P')<<j;
}
}
for(int i=0;i<1<<m;i++)
{
int num=1,last=-1;
for(int j=0;j<m;j++)
{
if(i>>j&1)
{
if(last!=-1&&j-last<3)
num=0;
last=j;
}
}
if(num)
q.push_back(i);
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<q.size();j++)
{
if((q[j]&s[i])==q[j])
{
for(int k=0;k<q.size();k++)
{
if(q[k]&s[i-1]==q[k])
{
for(int h=0;h<q.size();h++)
{
if(i==1||(q[h]&s[i-2])==q[h])
{
if(q[j]&q[k]==0&&q[j]&q[h]==0)
f[i][j][k]=max(f[i][j][k],f[i-1][k][h]+__builtin_popcount(q[j]));
}
}
}
}
}
}
for(int j=0;j<q.size();j++)
{
for(int k=0;k<q.size();k++)
{
ans=max(ans,f[n][j][k]);
}
}
}
cout<<ans;
}