#include <bits/stdc++.h>
using namespace std;
int seed = 13;
int M = 60000000;
int pre_calc[4][1000005] = {0};
void reverse(string& s) {
  map<char, char> mapD;
  mapD['N'] = 'S';
  mapD['S'] = 'N';
  mapD['E'] = 'W';
  mapD['W'] = 'E';
  string t;
  for (int i = 0; i < s.length(); ++i) {
    t += mapD[s[s.length() - 1 - i]];
  }
  s = t;
}
int main() {
  int n;
  cin >> n;
  string s, t;
  cin >> s >> t;
  reverse(t);
  pre_calc[0][0] = 'E';
  pre_calc[1][0] = 'N';
  pre_calc[2][0] = 'S';
  pre_calc[3][0] = 'W';
  for (int i = 1; i <= 1000000; ++i) {
    pre_calc[0][i] = (pre_calc[0][i - 1] * seed) % M;
    pre_calc[1][i] = (pre_calc[1][i - 1] * seed) % M;
    pre_calc[2][i] = (pre_calc[2][i - 1] * seed) % M;
    pre_calc[3][i] = (pre_calc[3][i - 1] * seed) % M;
  }
  bool f = false;
  int h1 = 0, h2 = 0;
  for (int i = 0; i < s.length() && (!f); ++i) {
    h1 = (h1 * seed + t[i]) % M;
    if (s[n - 2 - i] == 'E') {
      h2 += pre_calc[0][i];
    } else if (s[n - 2 - i] == 'N') {
      h2 += pre_calc[1][i];
    } else if (s[n - 2 - i] == 'S') {
      h2 += pre_calc[2][i];
    } else {
      h2 += pre_calc[3][i];
    }
    h2 %= M;
    if (h1 == h2) {
      int j = 0;
      for (; j <= i; ++j) {
        if (t[j] != s[n - 2 - i + j]) {
          break;
        }
      }
      if (j > i) {
        f = true;
        break;
      }
    }
  }
  cout << (f ? "NO" : "YES") << endl;
}
