#include <bits/stdc++.h>
using namespace std;
int n, i, j, k, o, len, w, A, B;
int tot[2], f[52][52];
char s[2][52], temp[111];
int a[52], b[52], c[52];
bool C[2][51][51][26];
int main() {
  cin >> s[0] + 1, tot[0] = strlen(s[0] + 1);
  cin >> s[1] + 1, tot[1] = strlen(s[1] + 1);
  cin >> n;
  for (i = 1; i <= n; i++) {
    cin >> temp + 1;
    a[i] = temp[1] - 'a';
    b[i] = temp[4] - 'a';
    c[i] = temp[5] - 'a';
  }
  for (o = 0; o <= 1; o++)
    for (i = 1; i <= tot[o]; i++) C[o][i][i][s[o][i] - 'a'] = true;
  for (o = 0; o <= 1; o++)
    for (len = 2; len <= tot[o]; len++)
      for (i = 1; i <= tot[o] - len + 1; i++) {
        j = i + len - 1;
        for (k = i; k < j; k++)
          for (w = 1; w <= n; w++)
            if (C[o][i][k][b[w]] && C[o][k + 1][j][c[w]])
              C[o][i][j][a[w]] = true;
      }
  memset(f, 63, sizeof(f));
  f[0][0] = 0;
  for (i = 1; i <= tot[0]; i++)
    for (j = 1; j <= tot[1]; j++)
      for (w = 0; w < 26; w++)
        for (A = 0; A < i; A++)
          if (C[0][A + 1][i][w])
            for (B = 0; B < j; B++)
              if (C[1][B + 1][j][w]) f[i][j] = min(f[i][j], f[A][B] + 1);
  if (f[tot[0]][tot[1]] > 500)
    cout << -1;
  else
    cout << f[tot[0]][tot[1]];
  return 0;
}
