#include <bits/stdc++.h>
using namespace std;
int a['z' + 1]['z' + 1], b['z' + 1]['z' + 1], n;
char c['z' + 1]['z' + 1];
long long ans = 0;
string s, t;
int main() {
  for (int i = 'a'; i <= 'z'; i++)
    for (int j = 'a'; j <= 'z'; j++) a[i][j] = 1000 * 1000 * 1000;
  for (int i = 'a'; i <= 'z'; i++) a[i][i] = 0;
  cin >> s >> t >> n;
  if (s.length() != t.length()) {
    cout << -1;
    return 0;
  }
  for (int i = 0; i < n; i++) {
    char u, v;
    int w;
    cin >> u >> v >> w;
    a[u][v] = min(a[u][v], w);
  }
  for (int k = 'a'; k <= 'z'; k++)
    for (int i = 'a'; i <= 'z'; i++)
      for (int j = 'a'; j <= 'z'; j++)
        a[i][j] = min(a[i][j], a[i][k] + a[k][j]);
  for (int i = 'a'; i <= 'z'; i++)
    for (int j = 'a'; j <= 'z'; j++) {
      b[i][j] = a[i]['a'] + a[j]['a'];
      c[i][j] = 'a';
      for (int k = 'b'; k <= 'z'; k++)
        if (a[i][k] + a[j][k] < b[i][j]) {
          b[i][j] = a[i][k] + a[j][k];
          c[i][j] = k;
        }
    }
  for (int i = 0; i < (int)s.length(); i++)
    if (b[s[i]][t[i]] >= 1000 * 1000 * 1000) {
      cout << -1;
      return 0;
    }
  for (int i = 0; i < (int)s.length(); i++) ans += b[s[i]][t[i]];
  cout << ans << endl;
  for (int i = 0; i < (int)s.length(); i++) putchar(c[s[i]][t[i]]);
  return 0;
}
