Estás a trabalhar numa startup que procura competir com a Boston Dynamics. Um dos desafios envolve dois robôs que precisam de trocar de posição numa grelha, sem nunca se sobreporem.
A grelha possui altura h e largura w, onde o chão está marcado com pontos (.) e as paredes estão marcadas com cerquilhas (#).
Os robôs podem deslocar-se horizontalmente, verticalmente e também na diagonal para as posições vizinhas. No entanto, não lhes é permitido pisarem-se mutuamente nem passarem por cima das paredes. Em cada passo, ambos podem mover-se ou permanecer na posição onde estão. Não é possível saltarem um por cima do outro durante um único movimento.
Deverás determinar qual é o número mínimo de passos necessários para que o primeiro robô vá para a posição do segundo e o segundo vá para a posição do primeiro.
Entrada
A primeira linha de entrada contém 2 inteiros h e w (1 ≤ h, w ≤ 50).
Nas h linhas seguintes, cada linha contém w caracteres que representam a grelha.
O primeiro robô está marcado com a letra A e o segundo robô está marcado com a letra B.
Saída
O programa deve escrever o número mínimo de passos necessários para trocar os robôs de lugar, ou Impossible se a troca não for possível.