ARC132 B - Shift and Reverse (400)
BFSで解く
最初の状態をキューに入れて、キューの要素で以下の二つを行う
反転させた状態が既に確認済みで無いならキューに追加
先頭を末尾に移動した状態が既に確認済みで無いならキューに追加
実際に順列を持っていると各操作の時間計算量も空間計算量も$ \mathcal{O}(N)になってしまうので最初の要素と、昇順降順のどちらかの情報だけを持っておく
これで$ \mathcal{O}(1)になるので全体でも$ \mathcal{O}(N)