#include<bits/stdc++.h>
using namespace std;
const long long inf = (long long) 1e18 + 10;
const int inf1 = (int) 1e9 + 10;
#define int long long
#define dbl long double
#define endl '\n'
#define sc second
#define fr first
#define mp make_pair
#define pb push_back
#define all(x) x.begin(), x.end()
#define maxn 19
#define maxp (1<<19)
int n, q, mark[maxn][maxp], dp[maxn][maxp];
vector<int> nx[maxn];
int sol(int i, int mask) {
if(mark[i][mask]) return dp[i][mask];
mark[i][mask] = 1;
if(mask == 0) return dp[i][mask] = 1;
int lsb = 31-__builtin_clz(mask&-mask);
dp[i][mask] = 0;
bool ok = false;
for(auto j : nx[i]) {
if(j == lsb) {
ok = true;
continue;
}
if((mask&(1<<j)) != 0) {
dp[i][mask]+= sol(j,mask - (1<<j));
}
}
if(ok || i == lsb) {
int mask1 = mask - (1<<lsb);
int lsb1 = 31-__builtin_clz(mask1&-mask1);
dp[i][mask]+= sol(lsb1,mask1);
}
return dp[i][mask];
}
void solve() {
cin >> n;
for(int i = 0; i < n; i++) {
int posi;
vector<int> rank;
for(int j = 0; j < n; j++) {
int x; cin >> x;
x--;
rank.pb(x);
if(x == i) posi = j;
}
for(int j = 0; j < posi; j++) {
nx[rank[j]].pb(i);
}
}
int q; cin >> q;
while(q--) {
string s; cin >> s;
int mask = 0;
for(int i = 0; i < n; i++) {
if(s[i] == 'H') mask+= (1<<i);
}
int mask1 = (1<<n)-1-mask;
cout << sol(31-__builtin_clz(mask&-mask),mask)*sol(31-__builtin_clz(mask1&-mask1),mask1) << endl;
}
}
int32_t main() {
ios::sync_with_stdio(false); cin.tie(0);
int tt = 1;
// cin >> tt;
while(tt--) solve();
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}