include[HTML_REMOVED]
using namespace std;
int n,m,c=0,dp[2][610][610],num[610],cnt[610];
char a[105][15];
bool reok(int i,int x)
{
int t=m;
while(x)
{
if((x&1)&&a[i][t]==’H’) return 0;
t–,x>>=1;
}
return 1;
}
int main()
{
memset(cnt,0,sizeof(cnt));
cin>>n>>m;
for(int i=1;i<=n;i)
for(int j=1;j<=m;j)
cin>>a[i][j];
for(int i=0;i<(1<[HTML_REMOVED]>1&1)||(s>>2&1)))
flag=0;
s>>=1;
}
s=i;
if(flag)
{
num[c]=i;
while(s)
{
if(s&1) cnt[c];
s>>=1;
}
}
}
for(int i=1;i<=n;i)
for(int x=1;x<=c;x)
for(int y=1;y<=c;y)
for(int z=1;z<=c;z)
{
if((num[x]&num[y])|(num[x]&num[z])|(num[y]&num[z])) continue;
if(!reok(i,num[y])||!reok(i-1,num[x])||!reok(i-2,num[z])) continue;
dp[i&1][num[y]][num[x]]=max(dp[i-1&1][num[x]][num[z]]+cnt[y],dp[i&1][num[y]][num[x]]);
}
int ans=0;
for(int i=1;i<=c;i)
for(int j=1;j<=c;j)
ans=max(ans,dp[n&1][num[i]][num[j]]);
cout<<ans;
return 0;
}