#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
int n, m, mp[110][110], D, d;
char s[110];
int main(int argc, char *argv[])
{
    //from input file
    FILE *in = fopen(argv[1], "r");
    fscanf(in, "%d%d", &m, &n);
    for(int i = 0 ; i < n ; i++ )
    {
        fscanf(in, "%s", s);
        for(int j = 0 ; j < m ; j++ )
            mp[i][j] = s[j]=='*'?1:s[j]=='#'?-100:0;
    }

    //from output file
    FILE *inn = fopen(argv[2], "r");
    fscanf(inn, "%d", &D);

    //from user output file
    FILE *innn = fopen(argv[3], "r");
    fscanf(innn, "%d", &d);
    if( D != d ) return puts("0"), 0;
    int bnd = (n+m-2)*2, val = 0, cx = 0, cy = 0;
    for(int i = 0 ; i < bnd ; i++ )
    {
        int t;
        fscanf(innn, "%d", &t);
        if( i < n+m-2 )
        {
            switch( t )
            {
                case 1: cx++, val += mp[cx][cy], mp[cx][cy] = 0; break;
                case 2: cy++, val += mp[cx][cy], mp[cx][cy] = 0; break;
                default : return puts("0"), 0;
            }
        }
        else
        {
            switch( t )
            {
                case 3: cx--, val += mp[cx][cy], mp[cx][cy] = 0; break;
                case 4: cy--, val += mp[cx][cy], mp[cx][cy] = 0; break;
                default : return puts("0"), 0;
            }
        }
    }
    if( d == val ) puts("1");
    else puts("0");
    return 0;
}
