

var minKnightMoves = function(x, y) {
let dirs = [[1, 2], [2, 1], [2, -1], [1, -2], [-1, -2], [-2, -1], [-2, 1], [-1, 2]];
let queue = [[0, 0]];
let level = 0, visited = new Set();
while(queue.length != 0) {
let next = [];
while(queue.length != 0) {
let cur = queue.pop();
if (cur[0] == x && cur[1] == y) return level;
for (let dir of dirs) {
let nextX = cur[0]+dir[0], nextY = cur[1]+dir[1];
if (!visited.has(nextX+","+nextY)) {
next.push([nextX, nextY]);
visited.add(nextX+","+nextY);
}
}
};
queue = next;
level++;
}
};