#include <bits/stdc++.h>
const int inf = -1;
char t1, t2, s[110000], t[110000], ans[110000];
int n, t3, c[1000][1000], all;
using namespace std;
int main() {
  cin >> s >> t >> n;
  for (char a = 'a'; a <= 'z'; a++)
    for (char b = 'a'; b <= 'z'; b++)
      if (a != b) c[a][b] = inf;
  for (int i = 1; i <= n; i++) {
    cin >> t1 >> t2 >> t3;
    if (c[t1][t2] == -1 || c[t1][t2] > t3) c[t1][t2] = t3;
  }
  for (char k = 'a'; k <= 'z'; k++)
    for (char i = 'a'; i <= 'z'; i++)
      for (char j = 'a'; j <= 'z'; j++)
        if (c[i][k] != -1 && c[k][j] != -1 &&
            (c[i][j] == -1 || c[i][k] + c[k][j] < c[i][j]))
          c[i][j] = c[i][k] + c[k][j];
  int l1 = strlen(s);
  int l2 = strlen(t);
  if (l1 != l2) {
    cout << -1;
    return 0;
  }
  for (int i = 0; i < l1; i++) {
    char min;
    int coast = -1;
    for (char j = 'a'; j <= 'z'; j++)
      if (c[s[i]][j] != -1 && c[t[i]][j] != -1 &&
          (coast == -1 || c[s[i]][j] + c[t[i]][j] < coast)) {
        min = j;
        coast = c[s[i]][j] + c[t[i]][j];
      }
    if (coast == inf) {
      cout << -1;
      return 0;
    }
    ans[i] = min;
    all += coast;
  }
  cout << all << endl;
  cout << ans;
}
