#include <bits/stdc++.h>
using namespace std;
namespace zzc {
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - 48;
    ch = getchar();
  }
  return x * f;
}
int n, len1, len2;
bool f1[55][55][26], f2[55][55][26];
int g[55][55], s1[55], s2[55];
char ch[55];
vector<pair<int, int> > c[26];
void work() {
  scanf("%s", ch + 1);
  n = strlen(ch + 1);
  len1 = n;
  for (int i = 1; i <= n; i++) s1[i] = ch[i] - 'a';
  scanf("%s", ch + 1);
  n = strlen(ch + 1);
  len2 = n;
  for (int i = 1; i <= n; i++) s2[i] = ch[i] - 'a';
  n = read();
  for (int i = 1; i <= n; i++) {
    scanf("%s", ch + 1);
    c[ch[1] - 'a'].push_back(make_pair(ch[4] - 'a', ch[5] - 'a'));
  }
  for (int i = 1; i <= len1; i++) f1[i][i][s1[i]] = true;
  for (int len = 1; len <= len1; len++) {
    for (int l = 1, r; l + len - 1 <= len1; l++) {
      r = l + len - 1;
      for (int mid = l; mid < r; mid++) {
        for (int k = 0; k <= 25; k++) {
          for (auto x : c[k]) {
            f1[l][r][k] |= (f1[l][mid][x.first] && f1[mid + 1][r][x.second]);
          }
        }
      }
    }
  }
  for (int i = 1; i <= len2; i++) f2[i][i][s2[i]] = true;
  for (int len = 1; len <= len2; len++) {
    for (int l = 1, r; l + len - 1 <= len2; l++) {
      r = l + len - 1;
      for (int mid = l; mid < r; mid++) {
        for (int k = 0; k <= 25; k++) {
          for (auto x : c[k]) {
            f2[l][r][k] |= (f2[l][mid][x.first] && f2[mid + 1][r][x.second]);
          }
        }
      }
    }
  }
  memset(g, 0x3f, sizeof(g));
  g[0][0] = 0;
  for (int i = 1; i <= len1; i++) {
    for (int j = 1; j <= len2; j++) {
      for (int x = 1; x <= i; x++) {
        for (int y = 1; y <= j; y++) {
          for (int k = 0; k <= 25; k++) {
            if (f1[x][i][k] && f2[y][j][k])
              g[i][j] = min(g[i][j], g[x - 1][y - 1] + 1);
          }
        }
      }
    }
  }
  if (g[len1][len2] > 50) g[len1][len2] = -1;
  printf("%d\n", g[len1][len2]);
}
}  // namespace zzc
int main() {
  zzc::work();
  return 0;
}
