#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
using ll = long long;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  const vector<string> elem{
      "",   "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> atomic_num;
  for (int i = 1; i <= 100; ++i) {
    atomic_num[elem[i]] = i;
  }
  int n, k;
  cin >> n >> k;
  vector<int> inp(n);
  for (int i = 0; i < n; ++i) {
    string t;
    cin >> t;
    inp[i] = atomic_num[t];
  }
  vector<int> out(k);
  for (int i = 0; i < k; ++i) {
    string t;
    cin >> t;
    out[i] = atomic_num[t];
  }
  int sum[1 << 17];
  memset(sum, 0x00, sizeof(sum));
  for (int i = 1; i < 1 << n; ++i) {
    int x = i & -i;
    int y = __builtin_ctz(x);
    sum[i] = sum[i ^ x] + inp[y];
  }
  int dp[1 << 17], from[1 << 17];
  memset(dp, 0xff, sizeof(dp));
  dp[0] = 0;
  for (int i = 0; i < (1 << n); ++i) {
    if (dp[i] == -1) continue;
    int m = ~i & ((1 << n) - 1);
    for (int j = m; j != 0; j = (j - 1) & m) {
      if (sum[j] == out[dp[i]]) {
        dp[i ^ j] = dp[i] + 1;
        from[i ^ j] = i;
      }
    }
  }
  if (dp[(1 << n) - 1] == k) {
    cout << "YES" << '\n';
    for (int i = (1 << n) - 1; i != 0; i = from[i]) {
      int step = i ^ from[i];
      vector<int> reactants;
      for (int x = 0; x < n; ++x) {
        if (step & (1 << x)) reactants.push_back(inp[x]);
      }
      cout << elem[reactants[0]];
      for (int j = 1; j < reactants.size(); ++j) {
        cout << '+' << elem[reactants[j]];
      }
      cout << "->" << elem[sum[step]] << '\n';
    }
  } else {
    cout << "NO" << '\n';
  }
  return 0;
}
