int getSubgroupRating(vector<string>);
vector<string> getSmallest(map< vector<string>, int>);
vector<string> getNextAvailableSet(vector<string>, vector<string>&);
int getSubgroupRating(vector<string>);
vector<string> getSmallest(map< vector<string>, int>);
vector<string> getNextAvailableSet(vector<string>, vector<string>&);