#include <bits/stdc++.h>
using namespace std;
int main() {
  string name[] = {"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"};
  map<string, int> table;
  for (int i = 0; i < (100); i++) table[name[i]] = i + 1;
  int n, k, w[17], w2[17];
  cin >> n >> k;
  string atom[17], atom2[17];
  for (int i = 0; i < (n); i++) {
    cin >> atom[i];
    w[i] = table[atom[i]];
  }
  for (int i = 0; i < (k); i++) {
    cin >> atom2[i];
    w2[i] = table[atom2[i]];
  }
  static int sum[1 << 17];
  for (int S = 0; S < (1 << n); S++)
    for (int j = 0; j < (n); j++)
      if (S & (1 << j)) sum[S] += w[j];
  static int dp[1 << 17], root[1 << 17];
  memset(dp, -1, sizeof(dp));
  dp[0] = 0;
  const int Omega = (1 << n) - 1;
  for (int S = 0; S < (1 << n); S++) {
    int T = Omega ^ S, num = dp[S];
    if (num == -1 || k <= num) continue;
    for (int subT = T; subT >= 0; subT--) {
      subT &= T;
      if (sum[subT] == w2[num]) {
        dp[S | subT] = num + 1;
        root[S | subT] = S;
      }
    }
  }
  if (dp[Omega] < k)
    cout << "NO" << endl;
  else {
    cout << "YES" << endl;
    for (int i = k - 1, S = Omega; S != 0; S = root[S]) {
      string s;
      int T = S ^ root[S];
      for (int j = 0; j < (n); j++)
        if (T & (1 << j)) {
          if (s.length() > 0) s += '+';
          s += atom[j];
        }
      cout << s << "->" << atom2[i--] << endl;
    }
  }
  return 0;
}
