#include <bits/stdc++.h>
using namespace std;
const int N = 20;
int main() {
  int n, n2, n21, k, i, j, s, t, nt;
  static int sum[1 << N], f[1 << N], p[1 << N];
  string nuclearA[N], nuclearB[N];
  int numberA[N], numberB[N];
  map<string, int> number;
  string nuclear[] = {
      "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"};
  for (i = 0; i < sizeof(nuclear) / sizeof(nuclear[0]); ++i) {
    number[nuclear[i]] = i + 1;
  }
  cin >> n >> k;
  n2 = (1 << n);
  n21 = n2 - 1;
  for (i = 0; i < n; ++i) {
    cin >> nuclearA[i];
    numberA[i] = number[nuclearA[i]];
  }
  for (i = 0; i < k; ++i) {
    cin >> nuclearB[i];
    numberB[i] = number[nuclearB[i]];
  }
  memset(sum, 0, sizeof(sum));
  for (s = 0; s < n2; ++s) {
    for (j = 0; j < n; ++j) {
      if (s & (1 << j)) {
        sum[s] += numberA[j];
      }
    }
  }
  memset(f, -1, sizeof(f));
  f[0] = 0;
  for (s = 0; s < n2; ++s) {
    i = f[s];
    if ((i == -1) || (i >= k)) {
      continue;
    }
    t = (s ^ n21);
    for (j = t; j >= 0; --j) {
      nt = j = (j & t);
      if (sum[nt] == numberB[i]) {
        f[nt | s] = i + 1;
        p[nt | s] = s;
      }
    }
  }
  if (f[n21] < k) {
    cout << "NO" << endl;
  } else {
    cout << "YES" << endl;
    s = n21;
    string str;
    while (s > 0) {
      i = f[s] - 1;
      t = p[s];
      str = "";
      for (j = 0; j < n; ++j) {
        if (((s & (1 << j)) != 0) && ((t & (1 << j)) == 0)) {
          str += nuclearA[j];
          str += "+";
        }
      }
      str.erase(str.length() - 1);
      str += "->";
      str += nuclearB[i];
      cout << str << endl;
      s = t;
    }
  }
  return 0;
}
