#include <bits/stdc++.h>
using namespace std;
int main() {
  string s, ss;
  cin >> s >> ss;
  int n;
  char a, b;
  cin >> n;
  int m[26][26];
  for (int l = 0; l < 26; l++) {
    for (int i = 0; i < 26; i++) {
      m[l][i] = 1000000000;
      if (i == l) {
        m[l][i] = 0;
      }
    }
  }
  int x;
  for (int i = 0; i < n; i++) {
    cin >> a >> b >> x;
    m[a - 'a'][b - 'a'] = min(m[a - 'a'][b - 'a'], x);
  }
  for (int k = 0; k < 26; k++) {
    for (int i = 0; i < 26; i++) {
      for (int j = 0; j < 26; j++) {
        m[i][j] = min(m[i][j], m[i][k] + m[k][j]);
      }
    }
  }
  if (s.size() != ss.size()) {
    cout << -1 << endl;
    return 0;
  }
  int ress = 0, res;
  string uf = "";
  char aux;
  for (int i = 0; i < s.size(); i++) {
    res = 100000000;
    if (s[i] == ss[i]) {
      uf += s[i];
      continue;
    }
    for (int j = 0; j < 26; j++) {
      if (res > m[s[i] - 'a'][j] + m[ss[i] - 'a'][j]) {
        res = m[s[i] - 'a'][j] + m[ss[i] - 'a'][j];
        aux = char(j + 'a');
      }
    }
    ress += res;
    uf += aux;
    if (res >= 100000000) {
      cout << -1 << endl;
      return 0;
    }
  }
  cout << ress << endl;
  cout << uf << endl;
  return 0;
}
