#include <bits/stdc++.h>
using namespace std;
int n;
int bo[2][55][55][26], dp[55][55];
string s[2];
vector<string> cha[27];
void load(int l, int r, int chara, int xd) {
  if (bo[xd][l][r][chara] >= 0) return;
  if (l == r) {
    if (s[xd][l] == char(chara + 97)) {
      bo[xd][l][r][chara] = 1;
    } else
      bo[xd][l][r][chara] = 0;
    return;
  }
  int flag = 0;
  for (int i = 0; i < cha[chara].size(); ++i) {
    string curchar = cha[chara][i];
    for (int j = l; j < r; ++j) {
      load(l, j, curchar[0] - 'a', xd);
      load(j + 1, r, curchar[1] - 'a', xd);
      if (bo[xd][l][j][curchar[0] - 'a'] > 0 &&
          bo[xd][j + 1][r][curchar[1] - 'a'] > 0) {
        flag = 1;
        break;
      }
    }
    if (flag) break;
  }
  bo[xd][l][r][chara] = flag;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> s[0] >> s[1] >> n;
  for (int i = 1; i <= n; ++i) {
    string sx;
    cin >> sx;
    string tmp = "";
    tmp = tmp + sx[3] + sx[4];
    cha[sx[0] - 'a'].push_back(tmp);
  }
  for (int i = 0; i <= 50; ++i)
    for (int j = 0; j <= 50; ++j)
      for (int t = 0; t <= 25; ++t) bo[0][i][j][t] = bo[1][i][j][t] = -1;
  for (int i = 0; i < s[0].length(); ++i)
    for (int j = i; j < s[0].length(); ++j)
      for (int t = 0; t < 26; ++t)
        if (bo[0][i][j][t] == -1) load(i, j, t, 0);
  for (int i = 0; i < s[1].length(); ++i)
    for (int j = i; j < s[1].length(); ++j)
      for (int t = 0; t < 26; ++t)
        if (bo[1][i][j][t] == -1) load(i, j, t, 1);
  for (int i = 0; i < s[0].length(); ++i)
    for (int j = 0; j < s[1].length(); ++j) dp[i][j] = 100000007;
  for (int i = 0; i < s[0].length(); ++i)
    for (int j = 0; j < s[1].length(); ++j) {
      for (int t = 0; t < 26; ++t)
        for (int i1 = i; i1 >= 0; --i1)
          for (int j1 = j; j1 >= 0; --j1)
            if (bo[0][i1][i][t] && bo[1][j1][j][t]) {
              if (i1 > 0 && j1 > 0)
                dp[i][j] = min(dp[i1 - 1][j1 - 1] + 1, dp[i][j]);
              else if (i1 == 0 && j1 == 0)
                dp[i][j] = 1;
            }
    }
  if (dp[s[0].length() - 1][s[1].length() - 1] < 100000007)
    cout << dp[s[0].length() - 1][s[1].length() - 1];
  else
    cout << "-1";
}
