#include <stdio.h>
#include <string.h>

#define MAX_N 256

int n, m, len, P, Q, A, B, dir, cost;
int mat[MAX_N][MAX_N], go[MAX_N][MAX_N];
char s[2 * MAX_N];

int x[4] = {0, 2, 0, -2};
int y[4] = {2, 0, -2, 0};
int vx[4] = {1, 0, 1, 0};
int vy[4] = {0, 1, 0, 1};

int main() {

	#ifndef ONLINE_JUDGE	
	    freopen("data.in", "r", stdin);
		freopen("data.out", "w", stdout);
	#endif

	scanf("%d %d\n", &n, &m);
	for (int i = 1; i <= n; i++) {
		scanf("%s", s); len = strlen(s);
		for (int j = 0; j < len; j++)
			mat[i * 2][2 * j + 2] = s[j] - '0';
	}

	memset(s, 0, sizeof(s));
	scanf("%s", s);
	
	P = 1; Q = 1; dir = 0;
    len = strlen(s);

	for (int i = 0; i < len; i++) {
    	if (s[i] == 'R') dir++;
		if (s[i] == 'L') dir--;
		if (s[i] == 'M') {
			A = P + x[dir] / 2;
			B = Q + y[dir] / 2;

			if (go[A + vx[dir]][B + vy[dir]] == 0) {
            	cost = cost + mat[A + vx[dir]][B + vy[dir]];
				go[A + vx[dir]][B + vy[dir]] = 1;
			}
			else cost = cost + mat[A + vx[dir]][B + vy[dir]] / 2;

            if (go[A - vx[dir]][B - vy[dir]] == 0) {
                cost = cost + mat[A - vx[dir]][B - vy[dir]];
                go[A - vx[dir]][B - vy[dir]] = 1;
            }
            else cost = cost + mat[A - vx[dir]][B - vy[dir]] / 2;

        	P = P + x[dir];
			Q = Q + y[dir];
		}

		if (dir == -1) dir = 3;
		if (dir == 4) dir = 0;
	}

	printf("%d\n", cost);

	return 0;
}
