#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdio>
#define N 110
#define M 11
using namespace std;
int dp[N][(1<<M)-1][(1<<M)-1];
int n,m,st,pic[N];
int cul[(1<<M)-1];
void init(int num)
{
for(int i=1; i<=num; ++i)
{
int tot=0,state=i;
while(state!=0)
{
if(state&1==1)
{
tot++;
}
state>>=1;
}
cul[i]=tot;
}
}
int main()
{
cin.tie(0),cout.tie(0);
ios::sync_with_stdio(false);
cin>>n>>m;
st=(1<<m)-1;
init(st);
for(int i=1; i<=n; ++i)
{
char row[M];
int state=0;
cin>>row;
for(int j=0; j<m; ++j)
{
state<<=1;
if(row[j]=='H')
{
state+=1;
}
}
pic[i]=state;
}
int ans=0;
for(int i=1; i<=n; ++i)
{
for(int j=0; j<=st; ++j)
{
if((j&pic[i])==0&&(j&(j<<2))==0&&(j&(j<<1))==0)
{
for(int k=0; k<=st; ++k)
{
for(int l=0; l<=st; ++l)
{
if((k&j)==0&&(l&j)==0)
{
dp[i][j][k]=max(dp[i][j][k],dp[i-1][k][l]+cul[j]);
}
}
if(i==n)
{
ans=max(ans,dp[i][j][k]);
}
}
}
}
}
cout<<ans;
return 0;
}