#include<bits/stdc++.h>
#define T long long t;cin >>t;while(t--)
#define fast ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define ll long long
#define lll unsigned long long
using namespace std;
int x,y;
char grid[40][40];
vector<pair<int,int>>v;
int mx=0;
void solve(int i,int c){
if (i==v.size()){
if (c>mx) mx=c;
return;
}
if ((v[i].first+1<x)&&grid[v[i].first+1][v[i].second]=='G'){
grid[v[i].first+1][v[i].second]='.';
solve(i+1,c+1);
grid[v[i].first+1][v[i].second]='G';
}
if ((v[i].first-1>=0)&&grid[v[i].first-1][v[i].second]=='G'){
grid[v[i].first-1][v[i].second]='.';
solve(i+1,c+1);
grid[v[i].first-1][v[i].second]='G';
}
if ((v[i].second+1<y)&&grid[v[i].first][v[i].second+1]=='G'){
grid[v[i].first][v[i].second+1]='.';
solve(i+1,c+1);
grid[v[i].first][v[i].second+1]='G';
}
if ((v[i].second-1>=0)&&grid[v[i].first][v[i].second-1]=='G'){
grid[v[i].first][v[i].second-1]='.';
solve(i+1,c+1);
grid[v[i].first][v[i].second-1]='G';
}
}
void Abady(){
cin >> x >> y;
for (int i=0;i<x;i++){
for (int j=0;j<y;j++){
cin >> grid[i][j];
if (grid[i][j]=='W') v.push_back({i,j});
}
}
solve(0,0);
cout << mx << endl;
}
int main(){
fast;
Abady();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBUIGxvbmcgbG9uZyB0O2NpbiA+PnQ7d2hpbGUodC0tKQojZGVmaW5lIGZhc3QgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKQojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGxsbCB1bnNpZ25lZCBsb25nIGxvbmcKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IHgseTsKY2hhciBncmlkWzQwXVs0MF07CnZlY3RvcjxwYWlyPGludCxpbnQ+PnY7CmludCBteD0wOwp2b2lkIHNvbHZlKGludCBpLGludCBjKXsKICAgIGlmIChpPT12LnNpemUoKSl7CiAgICAgICAgaWYgKGM+bXgpIG14PWM7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKCh2W2ldLmZpcnN0KzE8eCkmJmdyaWRbdltpXS5maXJzdCsxXVt2W2ldLnNlY29uZF09PSdHJyl7CiAgICAgICAgZ3JpZFt2W2ldLmZpcnN0KzFdW3ZbaV0uc2Vjb25kXT0nLic7CiAgICAgICAgc29sdmUoaSsxLGMrMSk7CiAgICAgICAgZ3JpZFt2W2ldLmZpcnN0KzFdW3ZbaV0uc2Vjb25kXT0nRyc7CiAgICB9CiAgICBpZiAoKHZbaV0uZmlyc3QtMT49MCkmJmdyaWRbdltpXS5maXJzdC0xXVt2W2ldLnNlY29uZF09PSdHJyl7CiAgICAgICAgZ3JpZFt2W2ldLmZpcnN0LTFdW3ZbaV0uc2Vjb25kXT0nLic7CiAgICAgICAgc29sdmUoaSsxLGMrMSk7CiAgICAgICAgZ3JpZFt2W2ldLmZpcnN0LTFdW3ZbaV0uc2Vjb25kXT0nRyc7CiAgICB9CiAgICBpZiAoKHZbaV0uc2Vjb25kKzE8eSkmJmdyaWRbdltpXS5maXJzdF1bdltpXS5zZWNvbmQrMV09PSdHJyl7CiAgICAgICAgZ3JpZFt2W2ldLmZpcnN0XVt2W2ldLnNlY29uZCsxXT0nLic7CiAgICAgICAgc29sdmUoaSsxLGMrMSk7CiAgICAgICAgZ3JpZFt2W2ldLmZpcnN0XVt2W2ldLnNlY29uZCsxXT0nRyc7CiAgICB9CiAgICBpZiAoKHZbaV0uc2Vjb25kLTE+PTApJiZncmlkW3ZbaV0uZmlyc3RdW3ZbaV0uc2Vjb25kLTFdPT0nRycpewogICAgICAgIGdyaWRbdltpXS5maXJzdF1bdltpXS5zZWNvbmQtMV09Jy4nOwogICAgICAgIHNvbHZlKGkrMSxjKzEpOwogICAgICAgIGdyaWRbdltpXS5maXJzdF1bdltpXS5zZWNvbmQtMV09J0cnOwogICAgfQp9Cgp2b2lkIEFiYWR5KCl7CiAgICBjaW4gPj4geCA+PiB5OwogICAgZm9yIChpbnQgaT0wO2k8eDtpKyspewogICAgICAgIGZvciAoaW50IGo9MDtqPHk7aisrKXsKICAgICAgICAgICAgY2luID4+IGdyaWRbaV1bal07CiAgICAgICAgICAgIGlmIChncmlkW2ldW2pdPT0nVycpIHYucHVzaF9iYWNrKHtpLGp9KTsKICAgICAgICB9CiAgICB9CiAgICBzb2x2ZSgwLDApOwogICAgY291dCA8PCBteCA8PCBlbmRsOwp9CmludCBtYWluKCl7CiAgICBmYXN0OwogICAgQWJhZHkoKTsKfQoK