#include <bits/stdc++.h>
using namespace std;
const int maxn = 52;
bool ch[30][30][30];
bool dp[2][maxn][maxn][30];
int ans[maxn][maxn];
string s[2];
int n;
int main() {
  cin >> s[0] >> s[1] >> n;
  for (int i = 0; i < n; i++) {
    string h;
    cin >> h;
    ch[h[3] - 'a'][h[4] - 'a'][h[0] - 'a'] = true;
  }
  for (int p = 0; p < 2; p++) {
    for (int i = 0; i < s[p].size(); i++)
      for (int j = 0; j < s[p].size() - 1 - i + 1; j++)
        if (i == 0)
          dp[p][j][j][s[p][j] - 'a'] = true;
        else
          for (int k = j + 1; k < j + i + 1; k++)
            for (int a = 0; a < 30; a++)
              for (int b = 0; b < 30; b++)
                for (int c = 0; c < 30; c++) {
                  if (dp[p][j][k - 1][a] && dp[p][k][i + j][b] && ch[a][b][c])
                    dp[p][j][i + j][c] = true;
                }
  }
  for (int i = 0; i < s[0].size(); i++)
    for (int j = 0; j < s[1].size(); j++) ans[i][j] = 100;
  for (int a = 0; a < s[0].size(); a++)
    for (int b = 0; b < s[1].size(); b++)
      for (int c = 0; c < a + 1; c++)
        for (int d = 0; d < b + 1; d++)
          for (int e = 0; e < 30; e++)
            if (dp[0][c][a][e] == dp[1][d][b][e] && dp[0][c][a][e])
              if (c == 0 && d == 0)
                ans[a][b] = 1;
              else if (c != 0 && d != 0)
                ans[a][b] = min(ans[a][b], ans[c - 1][d - 1] + 1);
  if (ans[s[0].size() - 1][s[1].size() - 1] == 100)
    cout << -1 << '\n';
  else
    cout << ans[s[0].size() - 1][s[1].size() - 1] << '\n';
  return 0;
}
