8
var containsCycle = function (grid) {11
const dfs = function (type, i, j, previ, prevj) {12
if (i < 0 || j < 0 || i == n || j == m) return false;13
if (grid[i][j] != type) return grid[i][j] == type.toUpperCase();14
grid[i][j] = grid[i][j].toUpperCase();15
for (let dir of dirs) {16
if (i + dir[0] == previ && j + dir[1] == prevj) continue;17
if (dfs(type, i + dir[0], j + dir[1], i, j)) return true;22
for (let i = 0; i < n; i++)23
for (let j = 0; j < m; j++) {24
if (grid[i][j] == grid[i][j].toUpperCase()) continue;25
if (dfs(grid[i][j], i, j, -1, -1)) return true;