思い付きで(白目)
日曜の夕方までバグりまくりでギブしかけたので突貫工事ですよ

i.imgur.com/ANvUE03.png
確かパリティチェックしてるなら出鱈目に入れ替えても
ID格納した配列の0と1の入れ替えだけで直せた気がする(未検証)

hp.vector.co.jp/authors/VA010128/math/puzzle/P15-2.html
確かこの辺見た記憶(色のどぎつい完成図に見覚えが)があるんだけど、
転倒数が奇数か偶数か調べりゃいい筈なんで、それをboolでやってるのがSolvable()

scrapbox.io/pocala-kyopro/%E8%BB%A2%E5%80%92%E6%95%B0
転倒数ってのはこれ