#include<cstdio>
#include<vector>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
int dp[108][1 << 10][1 << 10];
int ma[108][18];
int n, m;
vector<int> sta[108], pao[108];
int st[18];
void dfs(int r, int p)
{
    if (p == m + 1)
    {
        int s = 0, t = 0;
        bool fl = false;
        for (int i = 1; i <= m; i++)
        {
            s <<= 1;
            if (st[i]) s |= 1, t++;
        }
        for (int j = 1; j <= 2; j++)
            if ((s << j) & s || (s & (s >> j)))
            {
                fl = true;
                break;
            }
        if (!fl)
        {
            sta[r].push_back(s);
            pao[r].push_back(t);
        }
        return;
    }
    dfs(r, p + 1);
    if (ma[r][p])
    {
        st[p] = 1;
        dfs(r, p + 1);
        st[p] = 0;
    }
}
int main()
{
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
        {
            char c; cin >> c;
            if (c == 'P') ma[i][j] = 1;
        }
    sta[0].push_back(0), pao[0].push_back(0);
    for (int i = 1; i <= n; i++) dfs(i, 1);
    for (int i = 0; i < pao[1].size(); i++) dp[1][0][i] = pao[1][i];
    for (int i = 0; i < pao[1].size(); i++)
        for (int j = 0; j < pao[2].size(); j++)
        {
            if (sta[1][i] & sta[2][j]) continue;
            dp[2][i][j] = max(dp[2][i][j], dp[1][0][i] + pao[2][j]);
        }
    for (int i = 3; i <= n; i++)
    {
        for (int j = 0; j < sta[i - 2].size(); j++)
        {
            for (int k = 0; k < sta[i - 1].size(); k++)
            {
                if (sta[i - 2][j] & sta[i - 1][k]) continue;
                for (int l = 0; l < sta[i].size(); l++)
                {
                    if (sta[i][l] & sta[i - 1][k]) continue;
                    if (sta[i][l] & sta[i - 2][j]) continue;
                    dp[i][k][l] = max(dp[i][k][l], dp[i - 1][j][k] + pao[i][l]);
                }
            }
        }
    }
    int ans = 0;
    for(int j  = 0; j < sta[n - 1].size(); j++)
    for (int i = 0; i < sta[n].size(); i++)
        ans = max(ans, dp[n][j][i]);
    printf("%d", ans);
    return 0;
}