package chelper; import io.InputReader; import io.OutputWriter; public class SnarkB { int[][] directions = { {0, 1}, {0, -1}, {1, 0}, {-1, 0} }; public void solve(int testNumber, InputReader in, OutputWriter out) { int n = in.nextInt(); int m = in.nextInt(); int N = in.nextInt(); int M = in.nextInt(); int[][] a = new int[n][m]; for (int i = 0; i < n; i++) { String s = in.nextString(); for (int j = 0; j < m; j++) { if (s.charAt(j) == 'O') { a[i][j] = 1; } } } int mini = n; int minj = n; int maxi = 0; int maxj = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] != 1) { continue; } mini = Math.min(mini, i); minj = Math.min(minj, j); maxi = Math.max(maxi, i); maxj = Math.max(maxj, j); } } int n2 = maxi - mini + 1; int m2 = maxj - minj + 1; int[][] a2 = new int[n2][m2]; for (int i = 0; i < n2; i++) { for (int j = 0; j < m2; j++) { a2[i][j] = a[i + mini][j + minj]; } } int[][] A = new int[N][M]; for (int i = 0; i < N; i++) { String s = in.nextString(); for (int j = 0; j < M; j++) { if (s.charAt(j) == 'O') { A[i][j] = 1; } } } int ans = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { boolean bounds = true; for (int factor = 1; factor < 1000 && bounds; factor++) { boolean ok = true; for (int ii = 0; ii < n2 * factor && ok && bounds; ii++) { for (int jj = 0; jj < m2 * factor && ok && bounds; jj++) { if (ii + i >= N || jj + j >= M) { bounds = false; ok = false; break; } int io = ii / factor; int jo = jj / factor; if (a2[io][jo] != 1) { continue; } if (A[ii + i][jj + j] != 1) { ok = false; break; } for (int[] direction : directions) { int ii2 = ii + direction[0]; int jj2 = jj + direction[1]; int val1 = -1; int val2 = -1; if (ii2 + i < 0 || jj2 + j < 0 || ii2 + i >= N || jj2 + j >= M) { val2 = 0; } else { val2 = A[ii2 + i][jj2 + j]; } int io2 = ii2 / factor; int jo2 = jj2 / factor; if (io2 < 0 || jo2 < 0 || io2 >= n2 || jo2 >= m2 || ii2 < 0 || jj2 < 0) { val1 = 0; } else { val1 = a2[io2][jo2]; } if (val1 != val2) { ok = false; break; } } } } if (ok) { ans++; } } } } out.println(ans); } }