rt
#include <iostream>
#include <vector>
using namespace std;
int maxKilledEnemies(vector<vector<char>>& grid) {
if (grid.empty() || grid[0].empty()) {
return 0;
}
int rows = grid.size();
int cols = grid[0].size();
vector<vector<int>> dp(rows, vector<int>(cols, 0));
int maxEnemies = 0;
for (int i = 0; i < rows; i++) {
int enemyCount = 0;
for (int j = 0; j < cols; j++) {
if (grid[i][j] == 'E') {
enemyCount++;
} else if (grid[i][j] == 'W') {
enemyCount = 0;
} else {
dp[i][j] += enemyCount;
}
}
enemyCount = 0;
for (int j = cols - 1; j >= 0; j--) {
if (grid[i][j] == 'E') {
enemyCount++;
} else if (grid[i][j] == 'W') {
enemyCount = 0;
} else {
dp[i][j] += enemyCount;
}
}
}
for (int j = 0; j < cols; j++) {
int enemyCount = 0;
for (int i = 0; i < rows; i++) {
if (grid[i][j] == 'E') {
enemyCount++;
} else if (grid[i][j] == 'W') {
enemyCount = 0;
} else {
dp[i][j] += enemyCount;
maxEnemies = max(maxEnemies, dp[i][j]);
}
}
enemyCount = 0;
for (int i = rows - 1; i >= 0; i--) {
if (grid[i][j] == 'E') {
enemyCount++;
} else if (grid[i][j] == 'W') {
enemyCount = 0;
} else {
dp[i][j] += enemyCount;
maxEnemies = max(maxEnemies, dp[i][j]);
}
}
}
return maxEnemies;
}
int main() {
int n, m;
cin >> n >> m;
vector<vector<char>> grid(n, vector<char>(m));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> grid[i][j];
}
}
int maxEnemies = maxKilledEnemies(grid);
cout << maxEnemies << endl;
return 0;
}