#include <bits/stdc++.h>
char a[110000], b[110000];
char ss[110000];
char p[3], q[3];
int w;
int d[400][400];
using namespace std;
int main() {
  int n;
  scanf("%s%s", a, b);
  int la = strlen(a);
  int lb = strlen(b);
  int ans = 0;
  scanf("%d", &n);
  bool fg = 1;
  for (int i = 0; i < 300; i++)
    for (int j = 0; j < 300; j++) d[i][j] = 1111111;
  for (int i = 0; i < n; i++) {
    scanf("%s%s%d", p, q, &w);
    char A = p[0], B = q[0];
    d[A][B] = min(d[A][B], w);
  }
  if (la != lb) {
    puts("-1");
    return 0;
  }
  for (int i = 0; i < 300; i++) d[i][i] = 0;
  for (int k = 0; k < 300; k++)
    for (int i = 0; i < 300; i++)
      for (int j = 0; j < 300; j++) d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
  for (int i = 0; i < la; i++) {
    if (a[i] == b[i]) {
      ss[i] = a[i];
      continue;
    }
    int tmp = 1111111;
    for (int j = 'a'; j <= 'z'; j++) {
      tmp = min(tmp, d[a[i]][j] + d[b[i]][j]);
      if (tmp == d[a[i]][j] + d[b[i]][j]) ss[i] = j;
    }
    if (tmp == 1111111) {
      fg = 0;
      break;
    }
    ans += tmp;
  }
  if (!fg) {
    puts("-1");
    return 0;
  }
  printf("%d\n", ans);
  ss[la] = 0;
  puts(ss);
  return 0;
}
