puzzle solution and solver. not solving in good time yet