The Daily SET puzzle solver

A classic example of an object is a playing card.There are numerous games that utilize a deck of 52 playing cards; consider the game called Set instead. The object of the game is to identify sets of 3 cards from an array of 12 cards.
Each card has fourfeatures:
1.Symbols -oval, squiggle, or diamond
2.Color -Red, green, or purple
3.Number -one, two or three
4.Shading -filled, open, or striped. A set consists of 3 cards in which each of the card's features, looked at one-by-one, are the same on each card or different on each card. All features must satisfy this rule.

As an example, consider the following 3 cards --2 red filled squiggles 2 red striped squiggles 2 red open squiggles These cards form a set because:
1.They all feature squiggles
2.They are all red
3.They all have 2 symbols on them
4.One of them is filled, one is striped, and one is open.
Now consider the following 3 cards --2 red filled squiggles 2 red striped squiggles2 green open squiggles.
These cards do not form a set because two of the cards are red and one is green.

Now consider the following 3 cards --2 red filled squiggles 1 green striped oval 3 purple open diamondsIs this a set? Yes Why? Because all of the features on the cards are different.

Create a program that will solve the Daily Set puzzle (see https://www.setgame.com/set/puzzlefor more details).Your program shouldimplement a command line (text-based interface) capable of handling the following commands:

exit exits the program

load<file>as <puzzle>-reads a file containing a list of cards and stores them in the puzzle named puzzle. This command will create a new puzzle if necessary.

load<file>-parses the contents of the file as if they were entered from the command line

displaydisplays the list of created

puzzlesdisplay<puzzle>displays the cards stored in the puzzle named puzzle

new<puzzle>-creates an empty puzzle named puzzle

remove <puzzle>-Removes the specified puzzlefrom the list.

remove <card>from <puzzle>-Removes the specified card from the puzzle named puzzle.

add<card> to<puzzle>-Inserts the specified card into the puzzle name puzzle.

solve<puzzle>-solves the specified puzzle and displays its solution.

solve<card1> <card2>-displays the card required to form a set with card1and card2.

test<card1> <card2><card3>-displays whether card1, card2, and card3 form a set.

Note: <file>and <puzzle>are strings but will not contain spaces. All <card>entries are 4 characters long and have the following format:[number][color][shading][shape]Where [number]= {1,2,3}, [color]= {G,P,R}, [shading]= {F,O,S}, [shape]= {D,O,S}.This means that the card showing 2 red filled ovals would be represented as 2RFO and the cardshowing 1 green striped squiggle would be represented as 1GSS.