#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000 + 5;
const int N = 2e5 + 5;
const long long oo = 1e18 + 5;
const long long mod = 1e9 + 7;
const string names[103] = {
    "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", "Md", "No", "Lr"};
bool dp[20][1 << 17];
int pre[20][1 << 17];
int sum[1 << 17];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, k;
  cin >> n >> k;
  map<string, int> maps;
  for (int i = 0; i < 100; ++i) maps[names[i]] = i + 1;
  vector<string> s1(n), s2(k);
  vector<int> in1(n), in2(k);
  for (int i = 0; i < n; ++i) {
    string s;
    cin >> s;
    s1[i] = s;
    in1[i] = maps[s];
  }
  for (int i = 0; i < k; ++i) {
    string s;
    cin >> s;
    s2[i] = s;
    in2[i] = maps[s];
  }
  for (int mask = 0; mask < (1 << n); ++mask) {
    for (int bit = 0; bit < n; ++bit) {
      if ((mask >> bit) & 1) sum[mask] += in1[bit];
    }
  }
  dp[0][0] = 1;
  for (int i = 0; i < k; ++i) {
    for (int mask = 0; mask < (1 << n); ++mask) {
      if (sum[mask] == in2[i]) {
        int rem = (1 << n) - 1 - mask;
        for (int mask2 = rem; mask2 > 0; mask2 = ((mask2 - 1) & rem)) {
          if (dp[i][mask2]) {
            dp[i + 1][mask | mask2] = 1;
            pre[i + 1][mask | mask2] = mask2;
          }
        }
        if (dp[i][0]) {
          dp[i + 1][mask] = 1;
          pre[i + 1][mask] = 0;
        }
      }
    }
  }
  if (!dp[k][(1 << n) - 1]) return cout << "NO", 0;
  cout << "YES" << '\n';
  int rem = (1 << n) - 1;
  for (int i = k - 1; i >= 0; --i) {
    int cur = rem - pre[i + 1][rem];
    string ans;
    for (int bit = 0; bit < n; ++bit) {
      if (cur & (1 << bit)) ans += s1[bit] + "+";
    }
    ans = ans.substr(0, (int)ans.size() - 1) + "->" + s2[i];
    cout << ans << '\n';
    rem = pre[i + 1][rem];
  }
  return 0;
}
