#include <bits/stdc++.h>
using namespace std;
const int maxN = 1 << 17;
string el[101] = {
    "",   "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> id;
int sum[maxN];
vector<int> g[maxN];
int dp[maxN];
int main() {
  for (int i = 1; i <= 100; i++) {
    id[el[i]] = i;
  }
  int n, k;
  cin >> n >> k;
  vector<int> a(n), b(k);
  string s;
  for (auto &x : a) {
    string s;
    cin >> s;
    x = id[s];
  }
  for (auto &x : b) {
    string s;
    cin >> s;
    x = id[s];
  }
  vector<pair<int, int> > c;
  for (int mask = 0; mask < (1 << n); mask++) {
    int cnt = 0;
    for (int i = 0; i < n; i++) {
      if ((mask >> i) & 1) {
        sum[mask] += a[i];
        cnt++;
      }
    }
    g[sum[mask]].push_back(mask);
    c.push_back({cnt, mask});
  }
  dp[0] = 1;
  sort((c).begin(), (c).end());
  for (auto x : c) {
    int m = x.second;
    int s = 0;
    for (int j = 0; j < k; j++) {
      s += b[j];
      if (s == sum[m]) {
        for (int sm = m; sm; sm = (sm - 1) & m) {
          int m2 = m ^ sm;
          if (sum[sm] == b[j] && dp[m2]) {
            dp[m] = 1;
            break;
          }
        }
      }
    }
  }
  int m = (1 << n) - 1;
  if (!dp[m]) {
    cout << "NO" << endl;
    return 0;
  }
  cout << "YES" << endl;
  for (int i = k - 1, s = sum[m]; i >= 0; s -= b[i], i--) {
    for (int sm = m; sm; sm = (sm - 1) & m) {
      int m2 = m ^ sm;
      if (sum[sm] == b[i] && dp[m2]) {
        string cur;
        for (int j = 0; j < n; j++) {
          if ((1 << j) & sm) {
            cur += el[a[j]] + "+";
          }
        }
        cur.pop_back();
        cur += "->" + el[b[i]];
        cout << cur << endl;
        m = m2;
        break;
      }
    }
  }
  return 0;
}
