private void dfs(boolean[][] visited, int x, int y) {
        if (visited[y][x]) {
            return;
        }
        if (level[y].charAt(x) != 'X') {
            return;
        }
        visited[y][x] = true;
        // 左に移動
        if (0 < x) {
            dfs(visited, x - 1, y);
        }
        // 右に移動
        if (x < level[0].length() - 1) {
            dfs(visited, x + 1, y);
        }
        // 上下
        for (int i = 0; i < level.length; i++) {
            if (Math.abs(i - y) <= L) {
                dfs(visited, x, i);
            }
        }
    }