#include <bits/stdc++.h>
using namespace std;
string str[] = {
    "Pony", "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 n, k;
int a[18], b[18];
int val[1 << 18];
int dp[1 << 18][18];
int ans[1 << 18][18];
vector<int> v[18];
int go(int msk, int pos) {
  if (pos < 0) return 1;
  int &ret = dp[msk][pos];
  if (ret != -1) return ret;
  ret = 0;
  int flag;
  for (int s = msk; s; s = (s - 1) & msk) {
    if (val[s] == b[pos]) {
      flag = go(msk ^ s, pos - 1);
      if (flag) {
        ret = 1;
        ans[msk][pos] = s;
      }
    }
  }
  return ret;
}
int main() {
  int i, j;
  cin >> n >> k;
  for (i = 0; i < n; i++) {
    string ss;
    cin >> ss;
    for (j = 0;; j++) {
      if (str[j] == ss) {
        a[i] = j;
        break;
      }
    }
  }
  for (i = 0; i < k; i++) {
    string ss;
    cin >> ss;
    for (j = 0;; j++) {
      if (str[j] == ss) {
        b[i] = j;
        break;
      }
    }
  }
  for (int msk = 0; msk < (1 << n); msk++) {
    int sum = 0;
    for (i = 0; i < n; i++) {
      if (msk & (1 << i)) sum += a[i];
    }
    val[msk] = sum;
  }
  memset(dp, -1, sizeof(dp));
  int flag = go((1 << n) - 1, k - 1);
  if (!flag) {
    printf("NO\n");
    return 0;
  }
  printf("YES\n");
  int msk = (1 << n) - 1, pos = k - 1;
  while (pos >= 0) {
    int s = ans[msk][pos];
    for (i = 0; i < n; i++) {
      if (s & (1 << i)) v[pos].push_back(a[i]);
    }
    msk ^= s;
    pos--;
  }
  for (i = 0; i < k; i++) {
    for (j = 0; j < v[i].size(); j++) {
      cout << str[v[i][j]];
      if (j != v[i].size() - 1)
        cout << "+";
      else
        cout << "->";
    }
    cout << str[b[i]] << endl;
  }
  return 0;
}
