/*
TASK: flower
LANG: C++
*/

#include <iostream>
#include <vector>

using namespace std;

const int MAXN = 24;

vector<char> v;
int n;
long long F[MAXN][MAXN][MAXN][MAXN][MAXN];
int cnt[2];

long long f(int pos, int nn, int ns, int nw, int ne) {
    if( nn-ns < 0 || nw-ne < 0 || nn > cnt[0] || nw > cnt[1] ) return 0;
    if( pos == n ) {
        if( nn-ns == 0 && nw-ne == 0 ) return 1;
        return 0;
    }
    if( F[pos][nn][ns][nw][ne] != -1 ) F[pos][nn][ns][nw][ne];
    return F[pos][nn][ns][nw][ne] = f(pos+1, nn+1, ns, nw, ne) + f(pos+1, nn, ns+1, nw, ne) 
                            + f(pos+1, nn, ns, nw+1, ne) + f(pos+1, nn, ns, nw, ne+1);
}

int main() {
    
    cin >> n; v.resize(n);
    for(int i = 0; i < n; ++i)
        cin >> v[i];
  
    for(int i = 0; i < MAXN; ++i)
        for(int j = 0; j < MAXN; ++j)
            for(int k = 0; k < MAXN; ++k) 
                for(int k1 = 0; k1 < MAXN; ++k1)
                    for(int k2 = 0; k2 < MAXN; ++k2)
                        F[i][j][k][k1][k2] = -1;
  
    for(int i = 0; i < v.size(); ++i) { 
        cnt[0] += (v[i] == 'N');
        cnt[1] += (v[i] == 'W');
    }
    
//    cout << cnt[0] << ' ' << cnt[1] << '\n';
    cout << f(0, 0, 0, 0, 0) - 1 << '\n';

    return 0;
}
