import sys, math sys.setrecursionlimit(10**8) sys.set_int_max_str_digits(0) INF = 1e18 MOD = 998244353 from bisect import bisect_left, bisect_right from collections import deque, defaultdict, Counter from itertools import product, combinations, permutations, groupby, accumulate from heapq import heapify, heappop, heappush input = sys.stdin.readline def I(): return input().rstrip() def II(): return int(input().rstrip()) def IS(): return input().rstrip().split() def MII(): return map(int, input().rstrip().split()) def LI(): return list(input().rstrip()) def TII(): return tuple(map(int, input().rstrip().split())) def LII(): return list(map(int, input().rstrip().split())) def LSI(): return list(map(str, input().rstrip().split())) def GMI(): return list(map(lambda x: int(x) - 1, input().rstrip().split())) def kiriage(a, b): return (a+b-1)//b def chmax(DP,i,v): if DP[i] < v: DP[i] = v def chmin(DP,i,v): if DP[i] > v: DP[i] = v def cnt_ika(li, x): # x 以下の要素数 return bisect_right(li, x) def cnt_miman(li, x): # x 未満の要素数 return bisect_left(li, x) def cnt_ijou(li, x): # x 以上の要素数 return len(li) - cnt_miman(li, x) def cnt_choka(li, x): # x より大きい要素数 return len(li) - cnt_ika(li, x) N = II() S = I() S = list(map(lambda x: 1 if x == 'E' else 0, S)) rS = list(accumulate(S, initial=0)) A = LII() rA = list(accumulate(A, initial=0)) Q = II() query = LII() minimum_effort = [INF] * (N + 1) minimum_effort[0] = 0 for l in range(N): for r in range(l, N): enemy = rS[r + 1] - rS[l] required_effort = rA[r + 1] - rA[l] chmin(minimum_effort, enemy, required_effort) for q in query: print(cnt_ika(minimum_effort, q) - 1)