The polar bears are going fishing. They plan to sail from (*s*<sub class="lower-index">*x*</sub>, *s*<sub class="lower-index">*y*</sub>) to (*e*<sub class="lower-index">*x*</sub>, *e*<sub class="lower-index">*y*</sub>). However, the boat can only sail by wind. At each second, the wind blows in one of these directions: east, south, west or north. Assume the boat is currently at (*x*, *y*).
 -  If the wind blows to the east, the boat will move to (*x* + 1, *y*). -  If the wind blows to the south, the boat will move to (*x*, *y* - 1). -  If the wind blows to the west, the boat will move to (*x* - 1, *y*). -  If the wind blows to the north, the boat will move to (*x*, *y* + 1). 
Alternatively, they can hold the boat by the anchor. In this case, the boat stays at (*x*, *y*). Given the wind direction for *t* seconds, what is the earliest time they sail to (*e*<sub class="lower-index">*x*</sub>, *e*<sub class="lower-index">*y*</sub>)?
The first line contains five integers *t*, *s*<sub class="lower-index">*x*</sub>, *s*<sub class="lower-index">*y*</sub>, *e*<sub class="lower-index">*x*</sub>, *e*<sub class="lower-index">*y*</sub> (1 ≤ *t* ≤ 10<sup class="upper-index">5</sup>,  - 10<sup class="upper-index">9</sup> ≤ *s*<sub class="lower-index">*x*</sub>, *s*<sub class="lower-index">*y*</sub>, *e*<sub class="lower-index">*x*</sub>, *e*<sub class="lower-index">*y*</sub> ≤ 10<sup class="upper-index">9</sup>). The starting location and the ending location will be different.

The second line contains *t* characters, the *i*-th character is the wind blowing direction at the *i*-th second. It will be one of the four possibilities: "E" (east), "S" (south), "W" (west) and "N" (north).
from collections import deque
class Solution:
  def getRequiredTime(self, seconds_dictionary, x_distance, y_distance):
    if(x_distance==0 and y_distance==0):
      return "0"

    x_directions,y_directions = ["W","E"],["S","N"]
    x_move, y_move = x_directions[x_distance>0] , y_directions[y_distance>0]
    x_distance, y_distance = abs(x_distance), abs(y_distance)
    max_x_time, max_y_time = 0, 0

    while x_distance!=0 and seconds_dictionary[x_move]:
      max_x_time = seconds_dictionary[x_move].popleft()
      x_distance -=1

    while y_distance!=0 and seconds_dictionary[y_move]:
      max_y_time = seconds_dictionary[y_move].popleft()
      y_distance -=1

    if(y_distance>0 or x_distance>0):
      return "-1"

    return f"{max(max_x_time,max_y_time)}"

if __name__ == '__main__':
  s = Solution()
  seconds_dictionary = {}
  [total_points,x_start,y_start,x_end,y_end] = [int(element) for element in input().split()]
  x_distance, y_distance = x_end - x_start, y_end - y_start
  second = 1
  for direction in input():
    if(len(seconds_dictionary.get(direction,[]))==0):
      seconds_dictionary[direction] = deque([second])
    else:
      seconds_dictionary[direction].append(second)
    second+=1
  required_time = s.getRequiredTime(seconds_dictionary,x_distance,y_distance)
  print(required_time)
