/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package karel; import java.util.*; /** * * @author kajanek6 */ class way { int id; int dx; int dy; way right; way left; way(int dx, int dy, int id) { this.dx = dx; this.dy = dy; this.id=id; } } public class Karel { /** * @param args the command line arguments */ int x; int y; int W; int H; int L; char[][] M = new char[100][100]; way CurW; int runStr(String in, int[][][] used) { int i = 0; if (used[x][y][CurW.id] == 0) { used[x][y][CurW.id] = 1; while (i < in.length()) { switch (in.charAt(i)) { case 'L': CurW = CurW.left; break; case 'R': CurW = CurW.right; break; case 'S': { if ((x + CurW.dx >= 0) && (x + CurW.dx < W) && (y + CurW.dy >= 0) && (y + CurW.dy < H)) { if (M[x + CurW.dx][y + CurW.dy] != 'X') { x += CurW.dx; y += CurW.dy; } } } break; } i++; if(M[x][y]=='E') return 2; } } else { return 0; } return 1; } public static void main(String[] args) { Karel kar = new Karel(); int[][][] used = new int[100][100][5]; way wayT = new way(-1, 0, 1); way wayR = new way(0, 1, 2); way wayB = new way(1, 0, 3); way wayL = new way(0, -1, 4); wayT.left = wayL; wayL.left = wayB; wayB.left = wayR; wayR.left = wayT; wayT.right = wayR; wayL.right = wayT; wayB.right = wayL; wayR.right = wayB; Scanner sc = new Scanner(System.in); while (sc.hasNext()) { kar = new Karel(); used = new int[100][100][5]; kar.H = sc.nextInt(); kar.W = sc.nextInt(); String c; for (int i = 0; i < kar.H; i++) { c = sc.next(); for (int j = 0; j < kar.W; j++) { kar.M[i][j] = c.charAt(j); } } kar.L = sc.nextInt(); c = sc.next(); int k; int count = 1; for (int i = 0; i < kar.H; i++) { for (int j = 0; j < kar.W; j++) { if (kar.M[i][j] == '.') { used = new int[100][100][5]; kar.CurW=wayT; kar.x = i; kar.y = j; while((k=kar.runStr(c, used))==1) { } if(k==2) count++; } } } if (count==kar.W*kar.H)System.out.println("OK"); else System.out.println(count); } } }