https://victoriaritvo.com/blog/robust-semantle-solver/