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.*;

public class Solution {
    public static void main(String[] args) {
        var scanner = new Scanner(System.in);
        var result = new StringBuilder();
        String tStr = scanner.nextLine();
        int t = Integer.parseInt(tStr);
        for (var i = 0; i < t; i++) {
            String s = scanner.nextLine();
            result.append(questionC(s));
            if (i != t - 1) result.append("\n");
        }
        System.out.print(result);
    }

    public static long questionC(String paths) {
        var x = 0;
        var y = 0;
        int len = paths.length();
        var visitedPath = new HashSet<String>(len);
        long cost = 0L;
        for (var i = 0; i < len; i++) {
            char direction = paths.charAt(i);
            String previousPoint = getKey(x, y);
            if (direction == 'N') {
                y++;
            } else if (direction == 'S') {
                y--;
            } else if (direction == 'W') {
                x--;
            } else if (direction == 'E') {
                x++;
            }

            String currentPoint = getKey(x, y);
            if (visitedPath.contains(currentPoint + "_" + previousPoint) ||
                    visitedPath.contains(previousPoint + "_" + currentPoint)) {
                cost += 1;
            } else {
                cost += 5;
                visitedPath.add(currentPoint + "_" + previousPoint);
                visitedPath.add(previousPoint + "_" + currentPoint);
            }
        }
        return cost;
    }

    public static String getKey(int x, int y) {
        return x + "_" + y;
    }
}
