#include <bits/stdc++.h>
using namespace std;
const int N = 1000005;
int T, n, k;
char s[N], a[N], b[N];
int o[N], c[N];
bool vs[N];
int main() {
  scanf("%d", &T);
  register int i, j;
  while (T--) {
    scanf("%d%s%s%s", &k, s + 1, a + 1, b + 1), n = strlen(s + 1);
    for (i = 1; i <= n; ++i) s[i] -= 'a' - 1, a[i] -= 'a' - 1, b[i] -= 'a' - 1;
    for (i = 0; i < 27; ++i) o[i] = c[i] = vs[i] = 0;
    for (i = 1; i <= n; ++i) {
      ++c[s[i]];
      if (o[s[i]] == a[i]) continue;
      if (!o[s[i]] && !vs[a[i]])
        o[s[i]] = a[i], vs[a[i]] = 1;
      else
        break;
    }
    if (i <= n) {
      for (j = i, --c[s[i]]; j; --j) {
        if (o[s[j]] > a[j]) break;
        j < i ? --c[s[j]], (!c[s[j]] ? o[s[j]] = vs[a[j]] = 0 : 0) : 0;
        if (!o[s[j]]) {
          register int x = a[j] + 1;
          while (x <= k && vs[x]) ++x;
          if (x <= k) {
            o[s[j]] = x, vs[x] = 1;
            break;
          }
        }
      }
      if (!j) {
        puts("NO");
        continue;
      }
      for (++j; j <= n; ++j)
        if (!o[s[j]]) {
          register int x = 1;
          while (x <= k && vs[x]) ++x;
          o[s[j]] = x, vs[x] = 1;
        }
    }
    for (i = j = 1; i <= k; ++i)
      if (!o[i]) {
        while (j <= k && vs[j]) ++j;
        o[i] = j, vs[j] = 1;
      }
    register int fl = 0;
    for (i = 1; i <= n; ++i) {
      if (o[s[i]] < b[i]) break;
      if (o[s[i]] > b[i]) {
        fl = 1;
        break;
      }
    }
    if (fl) {
      puts("NO");
      continue;
    }
    puts("YES");
    for (i = 1; i <= k; ++i) putchar(o[i] + 'a' - 1);
    puts("");
  }
  return 0;
}
