Skier rides on a snowy field. Its movements can be described by a string of characters 'S', 'N', 'W', 'E' (which correspond to 1 meter movement in the south, north, west or east direction respectively).

It is known that if he moves along a previously unvisited segment of a path (i.e. this segment of the path is visited the first time), then the time of such movement is 5 seconds. If he rolls along previously visited segment of a path (i.e., this segment of the path has been covered by his path before), then it takes 1 second.

Find the skier's time to roll all the path.

Input

The first line contains an integer t (1 ≤ t ≤ 10^4) — the number of test cases in the input. Then t test cases follow.

Each set is given by one nonempty string of the characters 'S', 'N', 'W', 'E'. The length of the string does not exceed 10^5 characters.

The sum of the lengths of t given lines over all test cases in the input does not exceed 10^5.

Output

For each test case, print the desired path time in seconds.

Example

Input


5
NNN
NS
WWEN
WWEE
NWNWS


Output


15
6
16
12
25
import java.util.HashMap;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        for (int i = 0; i < t; i++) {
            char[] s = in.next().toCharArray();
            HashMap<pair, Boolean> map = new HashMap<pair, Boolean>();
            int x = 0, y = 0, ans = 0, len = s.length;
            for (int j = 0; j < len; j++)
                if (s[j] == 'N') {
                    x++;
                    pair m1 = new pair(x - 1, x, y, y);
                    pair m2 = new pair(x, x - 1, y, y);
                    if (map.containsKey(m1) || map.containsKey(m2)) {
                        ans++;
                    } else {
                        ans += 5;
                        map.put(m1, true);
                        map.put(m2, true);
                    }
                } else if (s[j] == 'S') {
                    x--;
                    pair m1 = new pair(x + 1, x, y, y);
                    pair m2 = new pair(x, x + 1, y, y);
                    if (map.containsKey(m1) || map.containsKey(m2)) {
                        ans++;
                    } else {
                        ans += 5;
                        map.put(m1, true);
                        map.put(m2, true);
                    }
                } else if (s[j] == 'E') {
                    y++;
                    pair m1 = new pair(x, x, y - 1, y);
                    pair m2 = new pair(x, x, y, y - 1);
                    if (map.containsKey(m1) || map.containsKey(m2)) {
                        ans++;
                    } else {
                        ans += 5;
                        map.put(m1, true);
                        map.put(m2, true);
                    }
                } else {
                    y--;
                    pair m1 = new pair(x, x, y + 1, y);
                    pair m2 = new pair(x, x, y, y + 1);
                    if (map.containsKey(m1) || map.containsKey(m2)) {
                        ans++;
                    } else {
                        ans += 5;
                        map.put(m1, true);
                        map.put(m2, true);
                    }
                }
            System.out.println(ans);
        }
    }

}

class pair {
    int x1;

    int x2;

    int y1;

    int y2;

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + x1;
        result = prime * result + x2;
        result = prime * result + y1;
        result = prime * result + y2;
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        pair other = (pair) obj;
        if (x1 != other.x1)
            return false;
        if (x2 != other.x2)
            return false;
        if (y1 != other.y1)
            return false;
        if (y2 != other.y2)
            return false;
        return true;
    }

    public pair(int x1, int x2, int y1, int y2) {
        super();
        this.x1 = x1;
        this.x2 = x2;
        this.y1 = y1;
        this.y2 = y2;
    }

}
		 		   			 	  	  				  	 	 	 	