wwww 0 bbbb를 

bbbbb 0 wwww로 만드려고 합니다.


(1) 0는 구멍이고 구멍과 인접한 w 혹은 b는 swap이 가능합니다

ex) www 0 w bbbb 이런 식으로 가능합니다

(2) 또한 다른 돌이 옆에 있고 그 다음 구멍이 있을 경우 점프가 가능합니다.

ex) www b 0 w bbb 상태에서

ww0 b w w bbb 이런식으로 가능합니다.


최소한의 이동 횟수를 구하는 것이 문제인데

우선 저는 각 움직임 (1), (2)을 구현하였고 

그 다음 각 상태를 string으로 만들었고 횟수와 함께 map에 저장했습니다. 

그런데 n이 조금만 커지니 오버플로우가 발생하더라구요. 효율적인 방법이 혹시 있을까요?