#include <bits/stdc++.h>
using namespace std;
string atom[] = {
    "",   "H",  "He", "Li", "Be", "B",  "C",  "N",  "O",  "F",  "Ne", "Na",
    "Mg", "Al", "Si", "P",  "S",  "Cl", "Ar", "K",  "Ca", "Sc", "Ti", "V",
    "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br",
    "Kr", "Rb", "Sr", "Y",  "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag",
    "Cd", "In", "Sn", "Sb", "Te", "I",  "Xe", "Cs", "Ba", "La", "Ce", "Pr",
    "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu",
    "Hf", "Ta", "W",  "Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl", "Pb", "Bi",
    "Po", "At", "Rn", "Fr", "Ra", "Ac", "Th", "Pa", "U",  "Np", "Pu", "Am",
    "Cm", "Bk", "Cf", "Es", "Fm"};
int dp[18][131072];
int ok[18][131072];
int main() {
  int n, m, a[17], b[17];
  char name[10];
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; i++) {
    scanf("%s", name);
    a[i] = find(atom, atom + 101, name) - atom;
  }
  for (int i = 0; i < m; i++) {
    scanf("%s", name);
    b[i] = find(atom, atom + 101, name) - atom;
  }
  memset(dp, 255, sizeof(dp));
  int mask = (1 << n) - 1;
  for (int i = dp[0][0] = 0; i < m; i++) {
    int s = 0, cnt = 0;
    vector<int> u;
    for (int r = 1; r <= mask; r++) {
      s ^= r & -r;
      if (r & -r & s)
        cnt += a[__builtin_ctz(r)];
      else
        cnt -= a[__builtin_ctz(r)];
      if (cnt == b[i]) {
        ok[i][s] = 1;
        u.push_back(s);
      }
    }
    if (u.size() <= 1000) {
      for (int r = 1; r <= mask; r++)
        for (auto s : u) {
          if (~dp[i][r ^ s] && (r & s) == s) {
            dp[i + 1][r] = s;
            break;
          }
        }
    } else {
      for (int r = 1; r <= mask; r++)
        for (s = r; s; s = s - 1 & r) {
          if (~dp[i][r ^ s] && ok[i][s]) {
            dp[i + 1][r] = s;
            break;
          }
        }
    }
  }
  if (dp[m][mask] < 0) return puts("NO");
  puts("YES");
  vector<string> ans;
  for (int i = m - 1; ~i; i--) {
    string str;
    int c = dp[i + 1][mask];
    for (int t = 0; t < n; t++)
      if (c & 1 << t) {
        if (str.size()) str += '+';
        str += atom[a[t]];
      }
    ans.insert(ans.begin(), str + "->" + atom[b[i]]);
    mask ^= c;
  }
  for (auto& str : ans) puts(str.c_str());
}
