function recursiveRegionCheck(x, y, grid1, grid2) {
  let result = true;

  if (!(+grid1[y][x] === 1 && +grid2[y][x] === 1)) {
    result = false;
  }

  grid1[y][x] = 0;
  grid2[y][x] = 0;

  // Left (Probably unnecesary since we're looping from left to right)
  if (x > 0 && (+grid1[y][x - 1] === 1 || +grid2[y][x - 1] === 1)) {
    result = recursiveRegionCheck(x - 1, y, grid1, grid2) && result;
  }
  
  // Right
  if (
    x < grid1[y].length - 1 &&
    (+grid1[y][x + 1] === 1 || +grid2[y][x + 1] === 1)
  ) {
    result = recursiveRegionCheck(x + 1, y, grid1, grid2) && result;
  }
  
  // top
  if (y > 0 && (+grid1[y - 1][x] === 1 || +grid2[y - 1][x] === 1)) {
    result = recursiveRegionCheck(x, y - 1, grid1, grid2) && result;
  }
  
  // bottom
  if (
    y < grid1.length - 1 &&
    (+grid1[y + 1][x] === 1 || +grid2[y + 1][x] === 1)
  ) {
    result = recursiveRegionCheck(x, y + 1, grid1, grid2) && result;
  }

  return result;
}

function countMatches(grid1, grid2) {
  // Write your code here
  let regionCount = 0;

  grid1 = grid1.map((row) => row.split(""));
  grid2 = grid2.map((row) => row.split(""));

  for (let y = 0; y < grid1.length; y++) {
    for (let x = 0; x < grid1[y].length; x++) {
      if (+grid1[y][x] === 0 && +grid2[y][x] === 0) {
        continue;
      }

      if (recursiveRegionCheck(x, y, grid1, grid2)) {
        regionCount++;
      }
    }
  }

  return regionCount;
}