#include <bits/stdc++.h>
using namespace std;
int n, m, N, f[60][60];
bool v[60][60][30], w[60][60][30];
char s[60], t[60], A[60], B[60], C[60];
int main() {
  scanf("%s%s%d", s, t, &N);
  n = strlen(s), m = strlen(t);
  for (int i = 1; i <= N; i++) scanf(" %c->%c%c", &A[i], &B[i], &C[i]);
  for (int i = n - 1; ~i; i--)
    for (int j = i; j < n; j++)
      for (int k = 0; k < 26; k++)
        if (i == j)
          v[i][j][k] = (s[i] - 'a' == k);
        else
          for (int l = 1; l <= N; l++)
            if (A[l] - 'a' == k)
              for (int p = i; p < j; p++)
                v[i][j][k] |= v[i][p][B[l] - 'a'] & v[p + 1][j][C[l] - 'a'];
  for (int i = m - 1; ~i; i--)
    for (int j = i; j < m; j++)
      for (int k = 0; k < 26; k++)
        if (i == j)
          w[i][j][k] = (t[i] - 'a' == k);
        else
          for (int l = 1; l <= N; l++)
            if (A[l] - 'a' == k)
              for (int p = i; p < j; p++)
                w[i][j][k] |= w[i][p][B[l] - 'a'] & w[p + 1][j][C[l] - 'a'];
  memset(f, 0x3f, sizeof(f));
  f[0][0] = 0;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++)
      for (int k = 0; k < i; k++)
        for (int l = 0; l < j; l++)
          for (int p = 0; p < 26; p++)
            if (v[k][i - 1][p] && w[l][j - 1][p])
              f[i][j] = min(f[i][j], f[k][l] + 1);
  printf("%d", f[n][m] > 100 ? -1 : f[n][m]);
  return 0;
}
