code: def solve(self):
      if len(self.val) == 0:
          return True
      kee = min(self.val.keys(), key=lambda x: len(self.val[x]))
      nums = self.val[kee]
      for n in nums:
          update = {kee: self.val[kee]}
          if self.valid_one(n, kee, update):  # valid choice
              if self.solve():  # keep solving
                  return True
          self.undo(
              kee, update
          )  # invalid choice or didn't solve it => undo
      return False
  
label_desc: Use image node_id 3 for calling the Sudoku obj's underlying member method code with example usage: obj.solve() and returns: False, True, True