#include <bits/stdc++.h>
using namespace std;
string change[55];
int n;
string a, b;
int maska[55][55];
int maskb[55][55];
int mask[55][55];
void createMask(string &str) {
  memset(mask, 0, sizeof mask);
  for (int i = 0; i < str.size(); i++) mask[i][i] = 1 << (str[i] - 'a');
  for (int len = 2; len <= str.size(); len++) {
    for (int b = 0; b + len <= str.size(); b++) {
      int e = b + len - 1;
      for (int div = b; div < e; div++) {
        for (int i = 0; i < n; i++) {
          if ((mask[b][div] & (1 << (change[i][3] - 'a'))) &&
              (mask[div + 1][e] & (1 << (change[i][4] - 'a')))) {
            mask[b][e] |= 1 << (change[i][0] - 'a');
          }
        }
      }
    }
  }
}
int main() {
  cin >> a >> b >> n;
  for (int i = 0; i < n; i++) cin >> change[i];
  createMask(a);
  memcpy(maska, mask, sizeof mask);
  createMask(b);
  memcpy(maskb, mask, sizeof mask);
  int dp[55][55];
  memset(dp, 0x11, sizeof dp);
  if (a[0] == b[0]) dp[0][0] = 1;
  for (int i = 0; i < a.size(); i++) {
    for (int u = 0; u < b.size(); u++) {
      for (int ii = 0; ii <= i; ii++) {
        for (int uu = 0; uu <= u; uu++) {
          if (maska[ii][i] & maskb[uu][u]) {
            int sum = (ii == 0 || uu == 0) ? 286331153 : dp[ii - 1][uu - 1] + 1;
            if (ii + uu == 0) sum = 1;
            dp[i][u] = min(dp[i][u], sum);
          }
        }
      }
    }
  }
  if (dp[a.size() - 1][b.size() - 1] > 66)
    cout << -1 << endl;
  else
    cout << dp[a.size() - 1][b.size() - 1] << endl;
  return 0;
}
