First let's create a class called Puzzle to represent the state of game such as:
class Puzzle {
blank_position: Tuple[int, int]
state: List[List[int]]
def __init__(self, state: List[List[int]]):
def find_blank_position() -> Tuple[int, int]:
def clone() -> Puzzle:
def move(position: Tuple[int, int], direction: str)
def moveLeft()
}