Свобоные ходи короля

В стандартной доске ферзь может двигаться в произвольном направлении и произвольному шагами.
1
А король может двигаться в произвольном направлении, но только одним единичным расстоянием.
2
У нас есть массив x = [x0, x1, x2]. Где x0 показывает изначальную позицию короля а x1, x2 изначальные позиции двух ферзей.
Нужно написать функцию которая получает массив x и возвращает массив тех позиций где король может двигаться не попав под удар ферзьей. Если нет свободных ходов вернуть -1.
3
Например в первом рисунке

x = [“D2”, “A4”, “E4”]

у короля есть два свободных поля “C1”, “C3” означает что должен получаться [“C1”, “C3”]

function kingFree(x) {}

console.log(kingFree(["D2", "A4", "E4"]));    // ["C1", "C3"]

console.log(kingFree(["D2", "A1", "F3"]));    // ["C2"]

console.log(kingFree(["E5", "A6", "F8"]));    // ["D4", "D5", "E4"]

console.log(kingFree(["G5", "E6", "H2"]));    // -1

console.log(kingFree(["A3", "C6", "E2"]));    // ["B3", "B4"]

console.log(kingFree(["D4", "A8", "B1"]));    // ["C3", "C4", "C5", "E3", "E5"]

console.log(kingFree(["A1", "B8", "C5"]));    // ["A2"]

console.log(kingFree(["C2", "B4", "F1"]));    // -1

console.log(kingFree(["C2", "A3", "H1"]));    // ["D2"]

console.log(kingFree(["F3", "C7", "D8"]));    // ["E2", "E3", "E4", "F2", "G2", "G4"]

Поможете решить задачу?

Тут тупо перебор. Получаешь массив клеток на которые король может сходить (разные будут наборы если король в углу, например). Полученный массив проверяешь - бъется ли что-то из него ферзями (можно для каждого ферзя держать массив клеток которые он бъет и смотреть входят ли клетки короля в эти массивы). Задача удобна тем что ферзи не будут преграждать дорогу друг другу.