#include <bits/stdc++.h>
using namespace std;
long long n, fw[27][27], w, s = 0;
string u, v, ans;
char d, m;
long long diz(char u, char v) { return fw[u - 'a' + 1][v - 'a' + 1]; }
char sti(int k) { return char(k + 'a' - 1); }
signed main() {
  ios_base::sync_with_stdio(0);
  ;
  cin >> u >> v;
  if (u.size() != v.size()) {
    cout << "-1";
    return 0;
  }
  for (int i = 1; i <= 26; i++)
    for (int j = 1; j <= 26; j++) {
      if (i == j)
        fw[i][j] = 0;
      else
        fw[i][j] = 999999999;
    }
  cin >> n;
  while (n--) {
    cin >> d >> m >> w;
    fw[d - 'a' + 1][m - 'a' + 1] = min(fw[d - 'a' + 1][m - 'a' + 1], w);
  }
  for (int k = 1; k <= 26; k++) {
    for (int i = 1; i <= 26; i++) {
      for (int j = 1; j <= 26; j++) {
        fw[i][j] = min(fw[i][j], fw[i][k] + fw[k][j]);
      }
    }
  }
  for (int i = 0; i < u.length(); i++) {
    if (u[i] == v[i]) {
      ans += u[i];
      continue;
    }
    long long mid = 0, sum = 9999999999;
    for (int j = 1; j <= 26; j++) {
      if (diz(u[i], sti(j)) + diz(v[i], sti(j)) < sum) {
        sum = diz(u[i], sti(j)) + diz(v[i], sti(j));
        mid = j;
      }
    }
    if (!mid) {
      cout << "-1";
      return 0;
    }
    ans += sti(mid);
    s += sum;
  }
  if (s >= 999999999) {
    cout << "-1";
    return 0;
  }
  cout << s << "\n" << ans;
}
