anchor.diff:                                          Map.empty
                                   let inmp = Map.add mpz.Data mst inm
                                   Map.add mst.Value inmp nx
  -                            f(t_op, cl, t_nx, k + 1)
  +                            let t_nx2 =
  +                                Map.add st.Value (Map.remove mpz.Data (Map.find st.Value t_nx)) t_nx
  +                            f(t_op, cl, t_nx2, k + 1)
                           else
                               f(op, cl, nx, k + 1)
                       else
  
positive.code:                     let t_op = Map.add mpz.Data mst op
                      (true, t_op, cl, nx) // it's a goal
                  else
                      if Map.containsKey pz.Data op then
                          let st : State = Map.find mpz.Data op
                          if mst.Value < st.Value then
                              let t_op = Map.add mpz.Data mst op
  
negative.code: [<EntryPoint>]
  let main args =
      let problem = InputPuzzle()
      //let problem = (Puzzle()).Shuffle(100)
      //problem.Print()
      let r = Solve(problem)
      for n in r do
          printfn "%d" n
      0
  
  ;;
  
  //main()
  