The PuzzleMuncher software will consist of one required program, PuzzleMuncher, which will be capable of solving at least the three different PUZZLEs specified in this section. In addition, the PuzzleMuncher system MUST support the specified PuzState interface so that additional puzzles can be seamlessly incorporated. The designer MAY also provide additional PUZZLE implementations with the final project.