#include <bits/stdc++.h>
using namespace std;
char s1[55], s2[55];
int m, a[55], b[55], c[55], f[55][55][30], f1[55][55][30], f2[55][55][30],
    g[55][55];
void calc(char*);
int main() {
  int i, j, k, p, q, n1, n2;
  char c1, c2, c3;
  scanf("%s%s%d\n", s1 + 1, s2 + 1, &m);
  for (i = 1; i <= m; ++i) {
    scanf("%c->%c%c\n", &c1, &c2, &c3);
    c[i] = c1 - 'a' + 1;
    a[i] = c2 - 'a' + 1;
    b[i] = c3 - 'a' + 1;
  }
  n1 = strlen(s1 + 1);
  n2 = strlen(s2 + 1);
  calc(s1);
  memcpy(f1, f, sizeof(f1));
  calc(s2);
  memcpy(f2, f, sizeof(f2));
  memset(g, 0x3f, sizeof(g));
  g[0][0] = 0;
  for (i = 1; i <= n1; ++i)
    for (j = 1; j <= n2; ++j)
      for (k = 0; k < i; ++k)
        for (p = 0; p < j; ++p)
          for (q = 1; q <= 26; ++q)
            if (f1[i - k][i][q] & f2[j - p][j][q])
              g[i][j] = min(g[i][j], g[i - k - 1][j - p - 1] + 1);
  printf("%d\n", (g[n1][n2] == 0x3f3f3f3f) ? -1 : g[n1][n2]);
  return 0;
}
void calc(char* s) {
  int i, j, k, p, l, n = strlen(s + 1);
  memset(f, 0, sizeof(f));
  for (i = 1; i <= n; ++i) f[i][i][s[i] - 'a' + 1] = 1;
  for (l = 2; l <= n; ++l)
    for (i = 1; i + l - 1 <= n; ++i) {
      j = i + l - 1;
      for (k = i; k < j; ++k)
        for (p = 1; p <= m; ++p)
          f[i][j][c[p]] |= (f[i][k][a[p]] & f[k + 1][j][b[p]]);
    }
}
