#include <bits/stdc++.h>
using namespace std;
int dp[51][51], n;
int len[2];
bool ok[2][26][51][51];
char str[50][51], s[2][51];
void Init(int id) {
  int st, ed, L, mid;
  for (int i = 0; i < len[id]; i++) ok[id][s[id][i] - 'a'][i + 1][i + 1] = true;
  for (L = 2; L <= len[id]; L++)
    for (st = 1, ed = st + L - 1; ed <= len[id]; st++, ed++)
      for (mid = st; mid < ed; mid++)
        for (int i = 0; i < n; i++)
          if (ok[id][str[i][3] - 'a'][st][mid] &&
              ok[id][str[i][4] - 'a'][mid + 1][ed])
            ok[id][str[i][0] - 'a'][st][ed] = true;
}
int main() {
  for (int i = 0; i < 2; i++) {
    scanf("%s\n", s[i]);
    len[i] = strlen(s[i]);
  }
  scanf("%d\n", &n);
  for (int i = 0; i < n; i++) scanf("%s\n", str[i]);
  Init(0);
  Init(1);
  for (int i = 0; i < 51; i++)
    for (int j = 0; j < 51; j++) dp[i][j] = 99999999;
  dp[0][0] = 0;
  for (int i = 1; i <= len[0]; i++)
    for (int j = 1; j <= len[1]; j++)
      for (int q = 0; q < i; q++)
        for (int p = 0; p < j; p++)
          if (dp[q][p] < dp[len[0]][len[1]])
            for (int ch = 0; ch < 26; ch++)
              if (ok[0][ch][q + 1][i] && ok[1][ch][p + 1][j]) {
                dp[i][j] = min(dp[q][p] + 1, dp[i][j]);
                break;
              }
  if (dp[len[0]][len[1]] < 999999)
    printf("%d\n", dp[len[0]][len[1]]);
  else
    puts("-1");
  return 0;
}
