#include <bits/stdc++.h>
using namespace std;
int N, M, last;
const int Maxn = 155;
char Map[Maxn][Maxn];
struct BNode {
  int l, r;
  int flag;
} st[Maxn];
int slove() {
  int i, j, ans = 0;
  for (i = 1; i <= N; i++) {
    if (i > last) return ans += last - 1;
    j = i + 1;
    if (i % 2) {
      if (st[j].flag) {
        if (st[i].r > st[j].r) {
          ans += st[i].r - st[i].l;
          st[j].r = st[i].r;
        } else
          ans += st[j].r - st[i].l;
      } else {
        ans += st[i].r - st[i].l;
        st[j].l = st[j].r = st[i].r;
      }
    } else {
      if (st[j].flag) {
        if (st[i].l < st[j].l) {
          ans += st[i].r - st[i].l;
          st[j].l = st[i].l;
        } else
          ans += st[i].r - st[j].l;
      } else {
        ans += st[i].r - st[i].l;
        st[j].l = st[j].r = st[i].l;
      }
    }
  }
  return ans += last - 1;
}
int main() {
  int i, j;
  while (scanf("%d%d", &N, &M) != EOF) {
    for (i = 1; i <= N; i++)
      for (j = 1; j <= M; j++) cin >> Map[i][j];
    for (i = 1; i <= N; i++) st[i].flag = 0;
    for (i = 1; i <= N; i++) {
      for (j = 1; j <= M; j++)
        if (Map[i][j] == 'W') {
          st[i].l = j;
          break;
        }
      for (j = M; j >= 1; j--)
        if (Map[i][j] == 'W') {
          st[i].r = j;
          st[i].flag = 1;
          break;
        }
    }
    last = 0;
    for (i = N; i >= 1; i--)
      if (st[i].flag) {
        last = i;
        break;
      }
    if (!last) {
      printf("0\n");
      continue;
    }
    if (st[1].flag)
      st[1].l = 1;
    else {
      st[1].flag = 1;
      st[1].l = st[1].r = 1;
    }
    int ans = slove();
    printf("%d\n", ans);
  }
  return 0;
}
