#include<bits/stdc++.h>
using namespace std;
int n,m,x[105],s[1<<10],num[1<<10],cnt,dp[2][1<<10][1<<10];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=0;j<m;j++){
char a;
cin>>a;
if(a=='H') x[i]+=1<<(m-j-1);
}
}
for(int i=0;i<1<<m;i++){
if(!(i&i>>1)&&!(i&i>>2)){
s[++cnt]=i;
for(int j=0; j<m; j++)
num[i]+=(i>>j&1);
}
}
for(int i=1;i<=n+2;i++){
for(int a=1;a<=cnt;a++){
for(int b=1;b<=cnt;b++){
for(int c=1;c<=cnt;c++){
if((s[a]&x[i])==s[a]&&(s[b]&x[i-1])==s[b]&&!(s[a]&s[b])&&!(s[b]&s[c])&&!(s[a]&s[c]))
dp[i&1][a][b]=max(dp[i&1][a][b],dp[i-1&1][b][c]+num[s[a]]);
}
}
}
}
cout<<dp[n+2&1][0][0];
return 0;
}
不知道为什么总是输出0?