#include <bits/stdc++.h>
using namespace std;
const int MAXN=1e6;
int n,m,k,N,M;
int id[15][15][15][15];
int val[2000];
char str[2000][3][5];
int f[2000][3][5][5];
vector< pair<int,int> >e[MAXN];
bool vis[MAXN];
priority_queue< pair<int,int> >que;
int dis[MAXN];
void solve(int s)
{
	memset(vis,false,sizeof(vis));
	memset(dis,0x3f,sizeof(dis));
	que.push(make_pair(dis[s]=0,s));
	while (!que.empty())
	{
		int x=que.top().second;que.pop();
		if (vis[x]) continue;
		vis[x]=true;
		for (auto i:e[x])
		{
			int y=i.first,v=i.second;
			if (dis[x]+v<dis[y])
				que.push(make_pair(-(dis[y]=dis[x]+v),y));
		}
	}
}
void add(int a,int b,int c)
{
	//if (a==f[id[2][1][1][1]][1][0][0] && b==f[id[1][1][0][1]][1][0][0]) printf("!!!%d %d %d\n",a,b,c);
	//if (a==f[id[2][1][1][1]][0][0][1] && b==f[id[1][1][1][0]][1][1][1]) printf("!!!%d %d %d\n",a,b,c);
	e[a].push_back(make_pair(b,c));
}
int main()
{
	N=0;scanf("%d%d%d",&n,&m,&k);
	int e0;scanf("%d",&e0);
	//printf("%d\n",(sizeof(val)+sizeof(str)+sizeof(f)+sizeof(id))>>10);
	for (int i=1;i<=e0;i++)
	{
		int r0,c0,r1,c1;
		scanf("%d%d%d%d",&r0,&c0,&r1,&c1);
		id[r0][c0][r1][c1]=++N;
		scanf("%d",&val[N]);val[N]>>=1;
		for (int t=0;t<k;t++)
			scanf("%s",str[N][t]);
		for (int t=0;t<k;t++)
			for (int a=0;a<=4;a++)
				for (int b=0;b<=4;b++)
					f[N][t][a][b]=++M;
		for (int t0=0;t0<k;t0++)
			for (int t1=0;t1<k;t1++)
				if (t0!=t1)
					for (int a=0;a<=4;a++)
						for (int b=0;b<4;b++)
							add(f[N][t0][a][b],f[N][t1][a][b+1],0);
	}
	for (int r0=0;r0<n;r0++)
		for (int c0=0;c0<m;c0++)
			for (int r1=0;r1<n;r1++)
				for (int c1=0;c1<m;c1++)
					if (id[r0][c0][r1][c1])
				{
					int l=0,r=0,s=0;
					for (int t=0;t<k;t++)
						for (char *ch=str[id[r0][c0][r1][c1]][t];*ch;ch++)
							if (*ch=='L') l++;
							else if (*ch=='R') r++;
							else if (*ch=='S') s++;
					// turn left
					int cnt=0,r2=r1+(r0==r1 ? (c0<c1 ? -1:1):0),c2=c1+(c0==c1 ? (r0<r1 ? 1:-1):0);
					for (int t=0;t<k;t++)
						for (char *ch=str[id[r0][c0][r1][c1]][t];*ch;ch++)
									if (*ch=='L') 
									{
										cnt++;
										for (int a=0;a<4;a++)
											for (int b=0;b<=4;b++)
												if (cnt!=l)
													add(f[id[r0][c0][r1][c1]][t][a][b],f[id[r1][c1][r2][c2]][cnt-1][a+1][b],val[id[r0][c0][r1][c1]]+val[id[r1][c1][r2][c2]]);
												else
													for (int nt=cnt;nt<=k;nt++)
														add(f[id[r0][c0][r1][c1]][t][a][b],f[id[r1][c1][r2][c2]][nt-1][a+1][b],val[id[r0][c0][r1][c1]]+val[id[r1][c1][r2][c2]]);
									}
					// go straight
					cnt=0;r2=r1*2-r0;c2=c1*2-c0;
					for (int t=0;t<k;t++)
						for (char *ch=str[id[r0][c0][r1][c1]][t];*ch;ch++)
									if (*ch=='S') 
									{
										cnt++;
										for (int a=0;a<=4;a++)
											for (int b=0;b<=4;b++)
												if (cnt!=s)
													add(f[id[r0][c0][r1][c1]][t][a][b],f[id[r1][c1][r2][c2]][cnt-1][a][b],val[id[r0][c0][r1][c1]]+val[id[r1][c1][r2][c2]]);
												else
													for (int nt=cnt;nt<=k;nt++)
														add(f[id[r0][c0][r1][c1]][t][a][b],f[id[r1][c1][r2][c2]][nt-1][a][b],val[id[r0][c0][r1][c1]]+val[id[r1][c1][r2][c2]]);
									}
					// turn right
					cnt=0;r2=r1+(r0==r1 ? (c0<c1 ? 1:-1):0);c2=c1+(c0==c1 ? (r0<r1 ? -1:1):0);
					for (int t=k-1;t>=0;t--)
						for (char *ch=str[id[r0][c0][r1][c1]][t];*ch;ch++)
									if (*ch=='R') 
									{
										cnt++;
							for (int a=0;a<=4;a++)
								for (int b=0;b<=4;b++)
										if (cnt!=r)
											add(f[id[r0][c0][r1][c1]][t][a][b],f[id[r1][c1][r2][c2]][k-cnt][a][b],val[id[r0][c0][r1][c1]]+val[id[r1][c1][r2][c2]]);
										else
											for (int nt=cnt;nt<=k;nt++)
												add(f[id[r0][c0][r1][c1]][t][a][b],f[id[r1][c1][r2][c2]][k-nt][a][b],val[id[r0][c0][r1][c1]]+val[id[r1][c1][r2][c2]]);
									}
				}
	int q;scanf("%d",&q);
	for (int i=1;i<=q;i++)
	{
		int rs0,cs0,rs1,cs1;
		int rt0,ct0,rt1,ct1;
		int x,y;
		scanf("%d%d%d%d",&rs0,&cs0,&rs1,&cs1);
		scanf("%d%d%d%d",&rt0,&ct0,&rt1,&ct1);
		scanf("%d%d",&x,&y);
		solve(f[id[rs0][cs0][rs1][cs1]][k-1][0][0]);
		//printf("===============\n");
		int ans=0x3f3f3f3f;
		for (int a=0;a<=x;a++)
			for (int b=0;b<=y;b++)
				ans=min(ans,dis[f[id[rt0][ct0][rt1][ct1]][k-1][a][b]]);
				//printf("%d %d %d\n",a,b,dis[f[id[rt0][ct0][rt1][ct1]][k-1][a][b]]);
		//printf("%d %d %d\n",f[id[rs0][cs0][rs1][cs1]][k-1][0][0],f[id[rt0][ct0][rt1][ct1]][k-1][0][0]);
				//ans=min(ans,f[rt0][ct0][rt1][ct1][k-1][a][b]);
		printf("%d\n",ans);
	}
}
