#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:64000000")
template <class T>
inline T sqr(T x) {
  return x * x;
}
string name[128] = {
    "",   "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> weight;
int n, m;
int a[32], b[32];
string aname[32];
string bname[32];
vector<int> ms[32];
char d[17][1 << 17];
int p[17][1 << 17];
char rec(int x, int mask) {
  if (x == m) return true;
  char &res = d[x][mask];
  if (res != -1) return res;
  res = 0;
  for (int i = 0; i < (int)((ms[x]).size()); ++i) {
    int nmask = ms[x][i];
    if (mask & nmask) continue;
    if (rec(x + 1, mask | nmask)) {
      res = true;
      p[x][mask] = nmask;
      break;
    }
  }
  return res;
}
int main() {
  for (int i = 1; i <= 100; ++i) weight[name[i]] = i;
  cin >> n >> m;
  for (int i = 0; i < n; ++i) {
    cin >> aname[i];
    a[i] = weight[aname[i]];
  }
  for (int i = 0; i < m; ++i) {
    cin >> bname[i];
    b[i] = weight[bname[i]];
  }
  for (int mask = 1; mask < (1 << n); ++mask) {
    int sum = 0;
    for (int i = 0; i < n; ++i)
      if (mask & (1 << i)) sum += a[i];
    for (int i = 0; i < m; ++i)
      if (sum == b[i]) ms[i].push_back(mask);
  }
  memset(d, -1, sizeof d);
  if (!rec(0, 0)) {
    puts("NO");
    return 0;
  }
  puts("YES");
  for (int i = 0, mask = 0; i < m; ++i) {
    int cur = p[i][mask];
    string res;
    for (int j = 0; j < n; ++j)
      if (cur & (1 << j)) res += aname[j] + "+";
    res = res.substr(0, (int)((res).size()) - 1);
    res += "->";
    res += bname[i];
    puts(res.c_str());
    mask |= cur;
  }
  return 0;
}
