#include <bits/stdc++.h>
const int N = 105;
using namespace std;
int n, m, a[N], dp[N][N][N], ans = -1; vector<int> v; char ch;
int cnt(int i, int cnt = 0) {
while (i) { i &= (i-1); cnt++; }
return cnt;
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> ch;
a[i] = (a[i] << 1) + (ch == 'P');
}
}
for (int i = 0; i < (1<<m); i++)
if ((i & (i >> 1)) == 0 && (i & (i >> 2)) == 0) v.push_back(i);
for (int i = 0; i < v.size(); i++) dp[1][i][0] = cnt(v[i]);
for (int i = 2; i <= n; i++) {
for (int j = 0; j < v.size(); j++) {
if ((v[j] & a[i]) != a[i]) continue;
for (int k = 0; k < v.size(); k++) {
if ((v[k] & a[i]) != a[i] || (v[j] & v[k])) continue;
for (int l = 0; l < v.size(); l++) {
if ((v[l] & a[i]) != a[i]) continue;
if ((v[j] & v[l]) || (v[k] & v[l])) continue;
dp[i][j][k] = max(dp[i][j][k], dp[i-1][k][l] + cnt(v[j]));
}
}
}
}
for (int i = 0; i < v.size(); i++)
for (int j = 0; j < v.size(); j++)
ans = max(ans, dp[n][i][j]);
cout << ans;
return 0;
}