#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
int la, lb, n, fa[55][55][27], fb[55][55][27], dp[55][55];
vector<int> va[55][27], vb[55][27];
vector<pair<int, int> > v[27];
char a[55], b[55], s[11];
int main() {
  scanf("%s%s", a + 1, b + 1);
  la = strlen(a + 1), lb = strlen(b + 1);
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%s", s);
    v[s[0] - 'a'].push_back(pair<int, int>(s[3] - 'a', s[4] - 'a'));
  }
  for (int i = la; i >= 1; i--) {
    fa[i][i][a[i] - 'a'] = 1;
    va[i][a[i] - 'a'].push_back(i);
    for (int j = i + 1; j <= la; j++)
      for (int c = 0; c < 26; c++) {
        int flag = 0;
        for (int l = 0; l < v[c].size(); l++) {
          pair<int, int> temp = v[c][l];
          int u = temp.first, v = temp.second;
          for (int k = i; k < j; k++)
            if (fa[i][k][u] && fa[k + 1][j][v]) {
              fa[i][j][c] = 1;
              flag = 1;
              break;
            }
          if (flag) break;
        }
        if (flag) va[i][c].push_back(j);
      }
  }
  for (int i = lb; i >= 1; i--) {
    fb[i][i][b[i] - 'a'] = 1;
    vb[i][b[i] - 'a'].push_back(i);
    for (int j = i + 1; j <= lb; j++)
      for (int c = 0; c < 26; c++) {
        int flag = 0;
        for (int l = 0; l < v[c].size(); l++) {
          pair<int, int> temp = v[c][l];
          int u = temp.first, v = temp.second;
          for (int k = i; k < j; k++)
            if (fb[i][k][u] && fb[k + 1][j][v]) {
              fb[i][j][c] = 1;
              flag = 1;
              break;
            }
          if (flag) break;
        }
        if (flag) vb[i][c].push_back(j);
      }
  }
  memset(dp, -1, sizeof(dp));
  for (int c = 0; c < 26; c++)
    for (int i = 0; i < va[1][c].size(); i++)
      for (int j = 0; j < vb[1][c].size(); j++)
        dp[va[1][c][i]][vb[1][c][j]] = 1;
  for (int i = 1; i < la; i++)
    for (int j = 1; j < lb; j++)
      if (~dp[i][j])
        for (int c = 0; c < 26; c++)
          for (int x = 0; x < va[i + 1][c].size(); x++)
            for (int y = 0; y < vb[j + 1][c].size(); y++) {
              int ii = va[i + 1][c][x], jj = vb[j + 1][c][y];
              if (dp[ii][jj] == -1 || dp[i][j] + 1 < dp[ii][jj])
                dp[ii][jj] = dp[i][j] + 1;
            }
  printf("%d\n", dp[la][lb]);
  return 0;
}
