#include <bits/stdc++.h>
using namespace std;
string s, ss, ans = "";
long long sum = 0, d[30][30];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n, w;
  cin >> s >> ss;
  cin >> n;
  char c, cc;
  for (int i = 0; i < 30; i++) {
    for (int j = 0; j < 30; j++) {
      d[i][j] = 1000000000000;
      if (i == j) d[i][j] = 0;
    }
  }
  for (int i = 0; i < n; i++) {
    cin >> c >> cc >> w;
    d[c - 'a'][cc - 'a'] = min(w, d[c - 'a'][cc - 'a']);
  }
  for (int k = 0; k < 30; k++) {
    for (int i = 0; i < 30; i++) {
      for (int j = 0; j < 30; j++) {
        if (d[i][k] == 1000000000000 || d[k][j] == 1000000000000) continue;
        if (d[i][j] > d[i][k] + d[k][j]) d[i][j] = d[i][k] + d[k][j];
      }
    }
  }
  if (s.size() != ss.size())
    cout << -1;
  else {
    for (int i = 0; i < s.size(); i++) {
      if (s[i] == ss[i]) {
        ans += s[i];
        continue;
      }
      long long mn = 1000000000000;
      for (int l = 0; l < 30; l++) {
        if (d[s[i] - 'a'][l] != 1000000000000 &&
            d[ss[i] - 'a'][l] != 1000000000000) {
          if (mn > d[s[i] - 'a'][l] + d[ss[i] - 'a'][l]) {
            mn = d[s[i] - 'a'][l] + d[ss[i] - 'a'][l];
            c = l + 'a';
          }
        }
      }
      if (mn == 1000000000000) {
        cout << -1;
        return 0;
      }
      sum += mn;
      ans += c;
    }
    cout << sum << endl;
    cout << ans;
  }
}
