#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m;
char maze[200][200];
const int INF=0x3f3f3f3f;
int lft[200];
int rht[200];
int main()
{
while(cin>>n>>m)
{
memset(lft,INF,sizeof(lft));//需要移动到的最左边
memset(rht,0,sizeof(rht));//最右边
int last=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>maze[i][j];
if(maze[i][j]=='W')
{
last=i;
lft[i]=min(lft[i],j);
rht[i]=max(rht[i],j);
}
}
}
int ans=0;
int cur=1;//起始位置
for(int i=1;i<=last;i++)
{
int next;
if(i%2)
{
next=max(rht[i],rht[i+1]);
if(next-cur>0)
ans+=next-cur,cur=next;
}
else
{
next=min(lft[i],lft[i+1]);
if(cur-next>0)
ans+=cur-next,cur=next;
}
}
cout<<ans+last-1<<endl;
}
return 0;
}
#include<cstring>
#include<algorithm>
using namespace std;
int n,m;
char maze[200][200];
const int INF=0x3f3f3f3f;
int lft[200];
int rht[200];
int main()
{
while(cin>>n>>m)
{
memset(lft,INF,sizeof(lft));//需要移动到的最左边
memset(rht,0,sizeof(rht));//最右边
int last=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>maze[i][j];
if(maze[i][j]=='W')
{
last=i;
lft[i]=min(lft[i],j);
rht[i]=max(rht[i],j);
}
}
}
int ans=0;
int cur=1;//起始位置
for(int i=1;i<=last;i++)
{
int next;
if(i%2)
{
next=max(rht[i],rht[i+1]);
if(next-cur>0)
ans+=next-cur,cur=next;
}
else
{
next=min(lft[i],lft[i+1]);
if(cur-next>0)
ans+=cur-next,cur=next;
}
}
cout<<ans+last-1<<endl;
}
return 0;
}