#include <bits/stdc++.h>
using namespace std;
namespace IO {
template <typename t>
inline void read(t& x) {
  x = 0;
  bool f = 1;
  char ch;
  for (ch = getchar(); ch < '0' || '9' < ch; ch = getchar())
    if (ch == '-') f ^= 1;
  for (; '0' <= ch && ch <= '9'; ch = getchar())
    x = (x << 3) + (x << 1) + (ch ^ 48);
  x = f ? x : -x;
}
}  // namespace IO
const int MAXN = 50 + 10;
const int CHAR_RANGE = 26 + 10;
int n, len[2], f[MAXN][MAXN];
bool can[2][MAXN][MAXN][CHAR_RANGE];
char str[2][MAXN], tmp[10];
vector<int> trans[CHAR_RANGE], rtrans[CHAR_RANGE * CHAR_RANGE + 100];
void calc(int _) {
  for (int i = (1), iend = (len[_]); i <= iend; ++i)
    can[_][i][i][str[_][i] - 'a'] = true;
  for (int l = (2), lend = (len[_]); l <= lend; ++l) {
    for (int i = (1), iend = (len[_] - l + 1); i <= iend; ++i) {
      int j = i + l - 1;
      for (int k = (i), kend = (j - 1); k <= kend; ++k)
        for (int ch1 = (0), ch1end = (25); ch1 <= ch1end; ++ch1)
          if (can[_][i][k][ch1])
            for (int ch2 = (0), ch2end = (25); ch2 <= ch2end; ++ch2) {
              if (can[_][k + 1][j][ch2]) {
                for (int x : rtrans[26 * ch1 + ch2]) can[_][i][j][x] = true;
              }
            }
    }
  }
}
int main() {
  scanf("%s", str[0] + 1), scanf("%s", str[1] + 1);
  len[0] = strlen(str[0] + 1), len[1] = strlen(str[1] + 1);
  IO::read(n);
  for (int i = (1), iend = (n); i <= iend; ++i) {
    scanf("%s", tmp + 1);
    rtrans[26 * (tmp[4] - 'a') + tmp[5] - 'a'].push_back(tmp[1] - 'a');
  }
  memset(f, -1, sizeof f);
  f[0][0] = 0;
  calc(0), calc(1);
  for (int i = (1), iend = (len[0]); i <= iend; ++i)
    for (int j = (1), jend = (len[1]); j <= jend; ++j) {
      f[i][j] = 1e9;
      for (int i2 = (0), i2end = (i - 1); i2 <= i2end; ++i2)
        for (int j2 = (0), j2end = (j - 1); j2 <= j2end; ++j2)
          if (f[i2][j2] != -1)
            for (int ch1 = (0), ch1end = (25); ch1 <= ch1end; ++ch1) {
              if (can[0][i2 + 1][i][ch1] && can[1][j2 + 1][j][ch1]) {
                f[i][j] = min(f[i2][j2] + 1, f[i][j]);
              }
            }
      if (f[i][j] == 1e9) f[i][j] = -1;
    }
  printf("%d\n", f[len[0]][len[1]]);
  return 0;
}
