MOD = 998244353
 
def solve(N, M, S, R, Q, X, Y):
    from collections import Counter
    prefix = {ch: [0] * (N + 1) for ch in set(S + R)}
    for i in range(N):
        for ch in prefix:
            prefix[ch][i + 1] = prefix[ch][i] + (1 if S[i] == ch else 0)
    freqR = Counter(R)
    ans = []
    for i in range(Q):
        l, r = X[i] - 1, Y[i]
        freqS = {ch: prefix[ch][r] - prefix[ch][l] for ch in prefix}
        ways = 1
        for ch in freqR:
            if freqS[ch] < freqR[ch]:
                ways = 0
                break
        if ways != 0:
            total = 1
            for ch in freqR:
                n = freqS[ch]
                r = freqR[ch]
                val = 1
                for j in range(r):
                    val = val * (n - j) % MOD
                total = (total * val) % MOD
            ways = total
        ans.append(ways % MOD)
    print(" ".join(map(str, ans)))
 
if __name__ == "__main__":
    T = int(input())
    for _ in range(T):
        N, M = map(int, input().split())
        S = input().strip()
        R = input().strip()
        Q = int(input())
        X = list(map(int, input().split()))
        Y = list(map(int, input().split()))
        solve(N, M, S, R, Q, X, Y)
 
				TU9EID0gOTk4MjQ0MzUzCgpkZWYgc29sdmUoTiwgTSwgUywgUiwgUSwgWCwgWSk6CiAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDb3VudGVyCiAgICBwcmVmaXggPSB7Y2g6IFswXSAqIChOICsgMSkgZm9yIGNoIGluIHNldChTICsgUil9CiAgICBmb3IgaSBpbiByYW5nZShOKToKICAgICAgICBmb3IgY2ggaW4gcHJlZml4OgogICAgICAgICAgICBwcmVmaXhbY2hdW2kgKyAxXSA9IHByZWZpeFtjaF1baV0gKyAoMSBpZiBTW2ldID09IGNoIGVsc2UgMCkKICAgIGZyZXFSID0gQ291bnRlcihSKQogICAgYW5zID0gW10KICAgIGZvciBpIGluIHJhbmdlKFEpOgogICAgICAgIGwsIHIgPSBYW2ldIC0gMSwgWVtpXQogICAgICAgIGZyZXFTID0ge2NoOiBwcmVmaXhbY2hdW3JdIC0gcHJlZml4W2NoXVtsXSBmb3IgY2ggaW4gcHJlZml4fQogICAgICAgIHdheXMgPSAxCiAgICAgICAgZm9yIGNoIGluIGZyZXFSOgogICAgICAgICAgICBpZiBmcmVxU1tjaF0gPCBmcmVxUltjaF06CiAgICAgICAgICAgICAgICB3YXlzID0gMAogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBpZiB3YXlzICE9IDA6CiAgICAgICAgICAgIHRvdGFsID0gMQogICAgICAgICAgICBmb3IgY2ggaW4gZnJlcVI6CiAgICAgICAgICAgICAgICBuID0gZnJlcVNbY2hdCiAgICAgICAgICAgICAgICByID0gZnJlcVJbY2hdCiAgICAgICAgICAgICAgICB2YWwgPSAxCiAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZShyKToKICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwgKiAobiAtIGopICUgTU9ECiAgICAgICAgICAgICAgICB0b3RhbCA9ICh0b3RhbCAqIHZhbCkgJSBNT0QKICAgICAgICAgICAgd2F5cyA9IHRvdGFsCiAgICAgICAgYW5zLmFwcGVuZCh3YXlzICUgTU9EKQogICAgcHJpbnQoIiAiLmpvaW4obWFwKHN0ciwgYW5zKSkpCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgVCA9IGludChpbnB1dCgpKQogICAgZm9yIF8gaW4gcmFuZ2UoVCk6CiAgICAgICAgTiwgTSA9IG1hcChpbnQsIGlucHV0KCkuc3BsaXQoKSkKICAgICAgICBTID0gaW5wdXQoKS5zdHJpcCgpCiAgICAgICAgUiA9IGlucHV0KCkuc3RyaXAoKQogICAgICAgIFEgPSBpbnQoaW5wdXQoKSkKICAgICAgICBYID0gbGlzdChtYXAoaW50LCBpbnB1dCgpLnNwbGl0KCkpKQogICAgICAgIFkgPSBsaXN0KG1hcChpbnQsIGlucHV0KCkuc3BsaXQoKSkpCiAgICAgICAgc29sdmUoTiwgTSwgUywgUiwgUSwgWCwgWSkK