#include <bits/stdc++.h>
using namespace std;
string a, b, c;
long long len, mem[100005];
long long ara[26][26];
long long dp(long long pos) {
  if (pos == len) return 0;
  if (mem[pos] != -1) return mem[pos];
  if (a[pos] == b[pos])
    mem[pos] = dp(pos + 1);
  else {
    int x, y;
    x = a[pos] - 97;
    y = b[pos] - 97;
    mem[pos] = 1000000000000000;
    if (ara[x][y] != 1000000000000000)
      mem[pos] = min(mem[pos], ara[x][y] + dp(pos + 1));
    if (ara[y][x] != 1000000000000000)
      mem[pos] = min(mem[pos], ara[y][x] + dp(pos + 1));
    for (int i = 0; i < 26; i++)
      if (ara[x][i] != 1000000000000000 && ara[y][i] != 1000000000000000)
        mem[pos] = min(mem[pos], ara[x][i] + ara[y][i] + dp(pos + 1));
  }
  return mem[pos];
}
void solve(int pos) {
  if (pos == len) return;
  if (a[pos] == b[pos])
    c += a[pos], solve(pos + 1);
  else {
    int x, y;
    x = a[pos] - 97;
    y = b[pos] - 97;
    if (ara[x][y] + dp(pos + 1) == dp(pos))
      c += b[pos], solve(pos + 1);
    else if (ara[y][x] + dp(pos + 1) == dp(pos))
      c += a[pos], solve(pos + 1);
    else {
      for (int i = 0; i < 26; i++) {
        if (ara[x][i] + ara[y][i] + dp(pos + 1) == dp(pos)) {
          c += (97 + i), solve(pos + 1);
          return;
        }
      }
    }
  }
  return;
}
int main() {
  cin >> a >> b;
  long long n, cst;
  scanf("%lld ", &n);
  char x, y;
  for (int i = 0; i < 26; i++)
    for (int j = 0; j < 26; j++) ara[i][j] = 1000000000000000;
  for (int i = 0; i < n; i++) {
    cin >> x >> y >> cst;
    ara[x - 97][y - 97] = min(cst, ara[x - 97][y - 97]);
  }
  for (int i = 0; i < 26; i++)
    for (int j = 0; j < 26; j++)
      for (int k = 0; k < 26; k++)
        ara[j][k] = min(ara[j][k], ara[j][i] + ara[i][k]);
  memset(mem, -1, sizeof mem);
  if (a.size() != b.size())
    cout << -1 << endl;
  else {
    len = a.size();
    long long res = dp(0);
    if (res == 1000000000000000)
      cout << -1 << endl;
    else {
      c = "";
      solve(0);
      cout << res << endl << c << endl;
    }
  }
  return 0;
}
