#include <bits/stdc++.h>
using namespace std;
char S1[1000000];
char S2[1000000];
char ret[1000000];
int W[30][30];
int main() {
  fgets(S1, 1000000, stdin);
  fgets(S2, 1000000, stdin);
  int s1 = strlen(S1), s2 = strlen(S2);
  s1--;
  s2--;
  if (s1 != s2) {
    printf("-1\n");
    return 0;
  }
  for (int i = (0); i < (30); i++)
    for (int j = (0); j < (30); j++) W[i][j] = 1000000;
  int n;
  scanf("%d\n", &n);
  for (int i = (0); i < (n); i++) {
    char a, b;
    int k;
    scanf("%c %c %d\n", &a, &b, &k);
    a -= 'a';
    b -= 'a';
    if (k < W[a][b]) W[a][b] = k;
  }
  for (int i = (0); i < (30); i++) W[i][i] = 0;
  for (int k = (0); k < (30); k++) {
    for (int i = (0); i < (30); i++) {
      for (int j = (0); j < (30); j++) {
        if (W[i][j] > W[i][k] + W[k][j]) W[i][j] = W[i][k] + W[k][j];
      }
    }
  }
  bool ok = true;
  int sum = 0;
  for (int i = (0); i < (s1); i++) {
    int m = 1000000;
    for (int j = (0); j < (30); j++) {
      if (W[S1[i] - 'a'][j] + W[S2[i] - 'a'][j] < m) {
        m = W[S1[i] - 'a'][j] + W[S2[i] - 'a'][j];
        ret[i] = j + 'a';
      }
    }
    sum += m;
    if (m >= 1000000) ok = false;
  }
  if (!ok)
    printf("-1\n");
  else {
    printf("%d\n", sum);
    for (int i = (0); i < (s1); i++) printf("%c", ret[i]);
    printf("\n");
  }
}
