#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
int n;
string a, b;
pair<char, pair<char, char> > opr[55];
int dp1[55][55][55], dp2[55][55][55];
int dp[55][55];
int main() {
  cin >> a >> b >> n;
  for (int i = 0; i < n; i++) {
    char c, cc1, cc2;
    cin >> c >> cc1 >> cc1 >> cc1 >> cc2;
    opr[i] = make_pair(c, make_pair(cc1, cc2));
  }
  for (int i = a.size() - 1; i >= 0; i--)
    for (int j = i; j < a.size(); j++) {
      if (i == j) {
        dp1[i][j][a[i] - 'a'] = 1;
        continue;
      }
      for (int k = i; k < j; k++)
        for (int ch = 0; ch < n; ch++) {
          char c = opr[ch].first, cc1 = opr[ch].second.first,
               cc2 = opr[ch].second.second;
          dp1[i][j][c - 'a'] |=
              (dp1[i][k][cc1 - 'a'] & dp1[k + 1][j][cc2 - 'a']);
        }
    }
  for (int i = b.size() - 1; i >= 0; i--)
    for (int j = i; j < b.size(); j++) {
      if (i == j) {
        dp2[i][j][b[i] - 'a'] = 1;
        continue;
      }
      for (int k = i; k < j; k++)
        for (int ch = 0; ch < n; ch++) {
          char c = opr[ch].first, cc1 = opr[ch].second.first,
               cc2 = opr[ch].second.second;
          dp2[i][j][c - 'a'] |=
              (dp2[i][k][cc1 - 'a'] & dp2[k + 1][j][cc2 - 'a']);
        }
    }
  memset(dp, -1, sizeof(dp));
  for (int i = 0; i <= a.size(); i++)
    for (int j = 0; j <= b.size(); j++) {
      if (i == 0 && j == 0) {
        dp[i][j] = 0;
        continue;
      }
      int ans = 1e8;
      for (int k = 0; k < i; k++)
        for (int k2 = 0; k2 < j; k2++)
          for (int ch = 0; ch <= 25; ch++)
            if (dp1[k + 1 - 1][i - 1][ch] && dp2[k2 + 1 - 1][j - 1][ch]) {
              int tmp = dp[k][k2] + 1;
              if (tmp < ans) ans = tmp;
            }
      dp[i][j] = ans;
    }
  if (dp[a.size()][b.size()] == 1e8)
    puts("-1");
  else
    cout << dp[a.size()][b.size()] << endl;
  return 0;
}
