#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
vector<vector<int> > ar(26, vector<int>(26, INF));
signed main() {
  ios_base::sync_with_stdio(0);
  string s, s1;
  cin >> s >> s1;
  if ((int)s.size() != (int)s1.size()) {
    puts("-1\n");
    return 0;
  }
  int n, w, u, v;
  cin >> n;
  while (n--) {
    char c;
    cin >> c;
    u = c - 'a';
    cin >> c;
    v = c - 'a';
    cin >> w;
    ar[u][v] = min(w, ar[u][v]);
  }
  for (int i = 0; i < 26; ++i) ar[i][i] = 0;
  for (int z = 0; z < 26; ++z)
    for (int i = 0; i < 26; ++i)
      for (int j = 0; j < 26; ++j)
        ar[i][j] = min(ar[i][j], ar[i][z] + ar[z][j]);
  int ans = 0;
  for (int i = 0; i < (int)s.size(); ++i) {
    if (s[i] == s1[i]) continue;
    int c = s[i] - 'a', c1 = s1[i] - 'a';
    int mn1 = INF;
    int id = -1;
    if (false) cerr << c << " " << c1 << '\n';
    for (int z = 0; z < 26; ++z) {
      if (ar[c][z] + ar[c1][z] < mn1) {
        mn1 = ar[c][z] + ar[c1][z];
        id = z;
      }
    }
    if (id == -1) {
      puts("-1\n");
      return 0;
    }
    ans += mn1;
    s[i] = char(id + 'a');
  }
  cout << ans << '\n';
  cout << s << '\n';
}
