#include <bits/stdc++.h>
using namespace std;
string atoms[100] = {
    "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",
};
const int maxn = 17;
int sum[1 << maxn];
bool dp[maxn + 1][1 << maxn];
int pp[maxn + 1][1 << maxn];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  map<string, int> id;
  for (int i = 0; i < (int)(100); i++) {
    id[atoms[i]] = i + 1;
  }
  int k, n;
  cin >> n >> k;
  vector<int> ids(n);
  for (int i = 0; i < (int)(n); i++) {
    string s;
    cin >> s;
    ids[i] = id[s];
  }
  vector<int> get(k);
  for (int i = 0; i < (int)(k); i++) {
    string s;
    cin >> s;
    get[i] = id[s];
  }
  for (int mask = 0; mask < (int)(1 << n); mask++) {
    for (int i = 0; i < (int)(n); i++)
      if ((mask >> i) & 1) sum[mask] += ids[i];
  }
  dp[0][0] = true;
  for (int i = (int)(1); i < (int)(k + 1); i++) {
    int to_get = get[i - 1];
    for (int mask = 0; mask < (int)(1 << n); mask++) {
      for (int a = mask; a > 0; a = (a - 1) & mask) {
        if (sum[a] == to_get) {
          if (dp[i - 1][mask ^ a]) {
            dp[i][mask] = true;
            pp[i][mask] = a;
            break;
          }
        }
      }
    }
  }
  if (!dp[k][(1 << n) - 1]) {
    cout << "NO" << endl;
    return 0;
  }
  cout << "YES" << endl;
  int i = k, mask = (1 << n) - 1;
  while (i > 0) {
    int a = pp[i][mask];
    bool f = false;
    for (int t = 0; t < (int)(n); t++)
      if ((a >> t) & 1) {
        if (f) cout << "+";
        cout << atoms[ids[t] - 1];
        f = true;
      }
    cout << "->" << atoms[get[i - 1] - 1] << endl;
    mask ^= a;
    i--;
  }
  return 0;
}
