#include <iostream>
#include <cstdio>
using namespace std;
inline int read()
{
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=x*10+c-'0';
c=getchar();
}
return f*x;
}
const int N=105;
int dp[N][N][N],n,m,f[N],cnt,o[N],s[N],ans;
int main()
{
n=read(); m=read();
for(int i=0;i<=(1<<m)-1;i++)
if(!(i&i<<1)&&!(i&i<<2)) o[++cnt]=i;
for(int i=1;i<=cnt;i++)
for(int j=1;j<=m;j++)
if(o[i]&(1<<(j-1))) s[i]++;
for(int i=2;i<=n+1;i++)
{
for(int j=1;j<=m;j++)
{
char c=getchar();
if(c=='H') f[i]|=1<<(j-1);
}
getchar();
}
for(int i=1;i<=n;i++)
for(int j=1;j<=cnt;j++)
if(!(o[j]&f[i-1]))
for(int k=1;k<=cnt;k++)
if(!(o[k]&f[i])&&!(o[j]&o[k]))
for(int l=1;l<=cnt;l++)
if(!(o[l]&f[i+1])&&!(o[j]&o[l])&&!(o[k]&o[l]))
dp[i+1][k][l]=max(dp[i+1][k][l],dp[i][j][k]+s[l]);
for(int j=1;j<=cnt;j++)
if(!(o[j]&f[n]))
for(int k=1;k<=cnt;k++)
if(!(o[k]&f[n+1])&&!(o[j]&o[k]))
ans=max(ans,dp[n+1][j][k]);
cout<<ans;
return 0;
}