#include <iostream>
#include <algorithm>
using namespace std;
int x1,y1,x2,y2,t;//起点和终点坐标,t时刻
char in[55];//存储每个时刻的风向
int s=0,r=0,mi=500,st=0;//s为返回值,r判断是否到达了终点,mi存储最小步数,st存储停留次数;
int setnow(int a,int b,int c,int d,int p);//输入起点终点,以及开始时刻;
int main()
{
cin>>x1>>y1>>x2>>y2;
cin>>t;
for(int i=0;i<t;i++){
cin>>in[i];//输入风向
}
cout<<setnow(x1,y1,x2,y2,0);
return 0;
}
int setnow(int a,int b,int c,int d,int p)
{
if(a==c&&b==d){//到达终点
r=1;
if(p-st<mi)mi=p-st;//判断使用步数(p时刻能走的距离-停留的次数),若更小则mi保存;
}
if(p>=t)return s;//结束;
for(int i=0;i<=1;i++){//进行两个选择
if(i==0){//顺风而行
if(in[p]=='E')
s=setnow(a+1,b,c,d,p+1);//向东起点横坐标加一,进入下一个时刻;
else if(in[p]=='W')
s=setnow(a-1,b,c,d,p+1);//向西起点横坐标减一,进入下一个时刻;
else if(in[p]=='N')
s=setnow(a,b+1,c,d,p+1);//向北起点纵坐标加一,进入下一个时刻;
else if(in[p]=='S')
s=setnow(a,b-1,c,d,p+1);//向南起点纵坐标减一,进入下一个时刻;
}
if(i==1){//停留
s=setnow(a,b,c,d,p+1);st++;}//停留起点坐标不变,进入下一个时刻;
}
if(r==0)return -1;//未到达返回-1;
else return mi;//到达了,返回最小值;
}