Stai lavorando in una startup che cerca di competere con Boston Dynamics. Una delle sfide consiste nel far scambiare posizione a due robot su una griglia senza che si ostacolino a vicenda.
La griglia ha altezza h e larghezza w. Il pavimento è rappresentato da punti (.) e i muri da simboli cancelletto (#).
I robot possono muoversi orizzontalmente, verticalmente e in diagonale verso le posizioni adiacenti. Tuttavia, non possono passare sulla stessa casella o oltrepassare muri. A ogni passo, entrambi i robot possono muoversi o rimanere fermi. Non è consentito che un robot “salti” l’altro durante lo spostamento.
Viene richiesto di determinare il numero minimo di mosse necessario affinché il primo robot occupi la posizione del secondo e il secondo quella del primo.
Input
La prima riga dell’input contiene 2 interi h e w (1 ≤ h, w ≤ 50).
Le successive h righe contengono w caratteri che rappresentano la griglia.
Il primo robot è indicato con la lettera A e il secondo robot è indicato con la lettera B.
Output
Il programma deve stampare il numero minimo di passi necessario per far scambiare posizione ai robot, oppure Impossible se non esiste alcuna soluzione.