#include <bits/stdc++.h>
using namespace std;
int hed[1010], dis[1010], mn[1010], pre[1010], bh[1010], tot = 1, s, t, mxfl,
                                                         mincost;
bool in[1010];
struct edg {
  int to, nxt, f, v;
} e[2010000];
void add(int x, int y, int f, int v) {
  e[++tot] = (edg){y, hed[x], f, v};
  hed[x] = tot;
  e[++tot] = (edg){x, hed[y], 0, -v};
  hed[y] = tot;
}
void dfs(int x) {
  e[bh[x]].f -= mn[t];
  e[bh[x] ^ 1].f += mn[t];
  if (pre[x] != s) dfs(pre[x]);
}
queue<int> q;
bool spfa() {
  for (int i = 1; i <= t + 2; i++) dis[i] = 2e9;
  dis[s] = 0;
  mn[s] = 2e9;
  q.push(s);
  while (!q.empty()) {
    int x = q.front();
    q.pop();
    in[x] = 0;
    for (int i = hed[x]; i; i = e[i].nxt) {
      int to = e[i].to;
      if (dis[to] > dis[x] + e[i].v && e[i].f > 0) {
        dis[to] = dis[x] + e[i].v;
        mn[to] = min(mn[x], e[i].f);
        pre[to] = x;
        bh[to] = i;
        if (!in[to]) q.push(to), in[to] = 1;
      }
    }
  }
  if (dis[t] == 2e9) return 0;
  dfs(t);
  return 1;
}
void ek() {
  mxfl = 0;
  mincost = 0;
  while (spfa()) {
    mincost += dis[t] * mn[t];
    mxfl += mn[t];
  }
}
int n, m, k, a, b, S, T, ss, tt, x, y, d[1010], ans, sum;
void add1(int x, int y, int f, int v) {
  ans += v;
  d[x]--;
  d[y]++;
  add(x, y, f, v);
}
char ch1[1010], ch2[1010];
int main() {
  scanf("%d%d%d%d%d", &n, &m, &k, &a, &b);
  scanf("%s%s", ch1 + 1, ch2 + 1);
  S = n + m + 1, T = n + m + 2;
  ss = T + 1;
  tt = ss + 1;
  for (int i = 1; i <= k; i++) {
    scanf("%d%d", &x, &y);
    add(x, y + n, 1, a), add(y + n, x, 1, b);
  }
  for (int i = 1; i <= n; i++)
    if (ch1[i] == 'R')
      add1(ss, i, k, 0);
    else if (ch1[i] == 'B')
      add1(i, tt, k, 0);
    else
      add(ss, i, k, 0), add(i, tt, k, 0);
  for (int i = 1; i <= m; i++)
    if (ch2[i] == 'B')
      add1(ss, i + n, k, 0);
    else if (ch2[i] == 'R')
      add1(i + n, tt, k, 0);
    else
      add(ss, i + n, k, 0), add(i + n, tt, k, 0);
  add(tt, ss, 2e9, 0);
  for (int i = 1; i <= n + m + 4; i++)
    if (d[i] > 0)
      add(S, i, d[i], 0), sum += d[i];
    else if (d[i] < 0)
      add(i, T, -d[i], 0);
  s = S, t = T;
  ek();
  if (mxfl != sum) {
    printf("-1");
    return 0;
  }
  printf("%d\n", ans + mincost);
  for (int i = 0; i < k; i++) {
    if (!e[i * 4 + 2].f)
      printf("R");
    else if (!e[i * 4 + 4].f)
      printf("B");
    else
      printf("U");
  }
  return 0;
}
