Просто перебор всех перестановок работает за

(переход к следующей перестановке амортизированно работает за

). И вроде бы это вы и делаете, только проверку перестановки расписываете через перемножение матриц.
Впрочем полезности "формулы русских ученых" я тоже не очень понимаю.