#include <bits/stdc++.h>
bool f1[55][55][27], f2[55][55][27], f[27][27][27];
int res[55][55];
char s[55], s1[55], s2[55];
int main() {
  int len1, len2, i, j, k, l, m, n, o;
  char a, b, c;
  scanf("%s", s1);
  scanf("%s", s2);
  len1 = strlen(s1), len2 = strlen(s2);
  scanf("%d", &n);
  memset(f, false, sizeof f);
  for (i = 0; i < n; i++) {
    scanf("%s", s);
    sscanf(s, "%c->%c%c", &a, &b, &c);
    f[a - 'a'][b - 'a'][c - 'a'] = true;
  }
  memset(f1, false, sizeof f1);
  memset(f2, false, sizeof f2);
  for (i = 0; i < len1; i++) f1[i][i][s1[i] - 'a'] = true;
  for (i = 0; i < len2; i++) f2[i][i][s2[i] - 'a'] = true;
  for (i = 1; i < len1; i++)
    for (j = 0; j + i < len1; j++)
      for (k = j; k < j + i; k++)
        for (l = 0; l < 26; l++)
          if (f1[j][k][l])
            for (m = 0; m < 26; m++)
              if (f1[k + 1][j + i][m])
                for (o = 0; o < 26; o++) f1[j][j + i][o] |= f[o][l][m];
  for (i = 1; i < len2; i++)
    for (j = 0; j + i < len2; j++)
      for (k = j; k < j + i; k++)
        for (l = 0; l < 26; l++)
          if (f2[j][k][l])
            for (m = 0; m < 26; m++)
              if (f2[k + 1][j + i][m])
                for (o = 0; o < 26; o++) f2[j][j + i][o] |= f[o][l][m];
  memset(res, 1, sizeof res);
  res[0][0] = 0;
  for (i = 0; i < len1; i++)
    for (j = 0; j < len2; j++)
      for (k = i; k < len1; k++)
        for (l = j; l < len2; l++) {
          for (m = 0; m < 26; m++)
            if (f1[i][k][m] && f2[j][l][m]) break;
          if (m < 26 && res[i][j] + 1 < res[k + 1][l + 1])
            res[k + 1][l + 1] = res[i][j] + 1;
        }
  printf("%d\n", res[len1][len2] <= 100 ? res[len1][len2] : -1);
  return 0;
}
