Statistics

Problem Statement for "FamilyTree"

Problem Statement

We are keeping a family tree. We update the data by adding information as it becomes available. When information arrives that is not consistent with the previous data, we need to recognize that fact immediately. We will enforce only the most obvious rules:
  • A person is either male or female.
  • A child's parent cannot be the child itself or a descendant of the child
  • A child has two parents, one male and the other female.
(A person is a descendant only of his parents, grandparents, greatgrandparents, etc.)

Each piece of data gives either the names of a child and parent or the name of a person and that person's gender. All occurrences of a name represent the same person. Create a class FamilyTree that contains a method firstBad that is given a String[] data. The method returns the (0-based) index of the first element of data that is inconsistent with the previous elements of data, or returns -1 if all the data is consistent.

Each element of data will be formatted in one of these two forms:

      "childname parentname"
      "name gender" 
where the two parts are separated by a single space character, each name is all uppercase letters 'A'-'Z' and gender is a single lowercase letter, either 'm' or 'f'.

Definition

Class:
FamilyTree
Method:
firstBad
Parameters:
String[]
Returns:
int
Method signature:
int firstBad(String[] data)
(be sure your method is public)

Constraints

  • data will contain between 1 and 50 elements, inclusive.
  • Each element of data will be formatted as above.
  • Each element of data will contain between 3 and 50 characters, inclusive.

Examples

  1. {"BOB JOHN","BOB JOHN","BOB MARY","BOB m","AL f"}

    Returns: -1

    Repeated data elements just give us more confidence. This data is all consistent. BOB's 2 parents are JOHN and MARY (it is not yet known which is the father and which is the mother), and BOB is male. We also know that AL is female.

  2. {"BOB JOHN","BOB MARY","MARY JOHN","JOHN f","MARY f","AL f"}

    Returns: 4

    The first 4 elements are considered consistent. They describe that BOB's 2 parents are JOHN and MARY and that (unconventionally) MARY is JOHN's child. JOHN is female. But "MARY f" is inconsistent with this since that makes both of BOB's parents female.

  3. {"BOB JOHN", "CARLA BOB", "JOHN CARLA"}

    Returns: 2

    After the first 2 elements we know that CARLA is a descendant of JOHN, so "JOHN CARLA" cannot be added.

  4. {"BOB RICK", "AL RICK", "AL PAULA", "PAULA LINUS", "LINUS BOB","BOB PAULA"}

    Returns: 5

    The first 5 elements are consistent. BOB's descendant AL was a child of RICK and PAULA, and RICK is BOB's parent. His other parent could not be PAULA since PAULA is his descendant so the final element is the first one that is inconsistent.

  5. {"BO LESLIE","SUE CASEY","SUE ROBIN","DEE ROBIN","DEE LESLIE","BO CASEY"}

    Returns: 5

    The final element makes it impossible to assign genders to LESLIE, CASEY, and ROBIN -- if CASEY were male, then ROBIN would have to be female (because of SUE), then LESLIE would have to be male (because of DEE) and then BO would have 2 male parents. Similarly if we assumed CASEY were female we would run into a contradiction.

  6. {"JOHN F", "JOHN m"}

    Returns: -1

  7. {"JOHN f", "JOHN M"}

    Returns: -1

  8. {"JOHN F", "JOHN M"}

    Returns: -1

  9. {"JOHN f", "JOHN m"}

    Returns: 1

  10. {"F M", "F M", "F M", "F M", "F M", "F M"}

    Returns: -1

  11. {"F m", "F m", "F m", "F m", "F m", "F m"}

    Returns: -1

  12. {"C X","C Y","C Z"}

    Returns: 2

  13. {"A B","A C","B C","B D","C D","C E","D E","D F","E F","E G", "F G","F H","G H","G I","H I","H J","I J","I K","J K","J L", "K L","K M","L M","L N","M N","M O","N O","N P","O P","O Q", "P Q","P R","Q R","Q S","R S","R T","S T","S U","T U","T V", "U V","U W","V W","V X","W X","W Y","X Y","X Z","Y Z","Y AA"}

    Returns: -1

  14. {"A M","A F"}

    Returns: -1

  15. {"A A"}

    Returns: 0

  16. {"A B","C D","E F","G H","I J","K L","M N","O P","Q R","S T","U V","W X","Y Z","AA AB","AC AD","AE AF","AG AH","AI AJ","AK AL","AM AN","AO AP","AQ AR","AS AT","AU AV"}

    Returns: -1

    This one breaks anyone who thinks there might be only 50 people (or fewer than 100)

  17. {"AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAB","AAAAAAAAAAAAAAAAAAAAAAAC AAAAAAAAAAAAAAAAAAAAAAAD", "AAAAAAAAAAAAAAAAAAAAAAAE AAAAAAAAAAAAAAAAAAAAAAAF","AAAAAAAAAAAAAAAAAAAAAAAG AAAAAAAAAAAAAAAAAAAAAAAH", "AAAAAAAAAAAAAAAAAAAAAAAI AAAAAAAAAAAAAAAAAAAAAAAJ","AAAAAAAAAAAAAAAAAAAAAAAK AAAAAAAAAAAAAAAAAAAAAAAL", "AAAAAAAAAAAAAAAAAAAAAAAM AAAAAAAAAAAAAAAAAAAAAAAN","AAAAAAAAAAAAAAAAAAAAAAAO AAAAAAAAAAAAAAAAAAAAAAAP", "AAAAAAAAAAAAAAAAAAAAAAAQ AAAAAAAAAAAAAAAAAAAAAAAR","AAAAAAAAAAAAAAAAAAAAAAAS AAAAAAAAAAAAAAAAAAAAAAAT", "AAAAAAAAAAAAAAAAAAAAAAAU AAAAAAAAAAAAAAAAAAAAAAAV","AAAAAAAAAAAAAAAAAAAAAAAW AAAAAAAAAAAAAAAAAAAAAAAX", "AAAAAAAAAAAAAAAAAAAAAAAY AAAAAAAAAAAAAAAAAAAAAAAZ","AAAAAAAAAAAAAAAAAAAAAABA AAAAAAAAAAAAAAAAAAAAAABB", "AAAAAAAAAAAAAAAAAAAAAABC AAAAAAAAAAAAAAAAAAAAAABD","AAAAAAAAAAAAAAAAAAAAAABE AAAAAAAAAAAAAAAAAAAAAABF", "AAAAAAAAAAAAAAAAAAAAAABG AAAAAAAAAAAAAAAAAAAAAABH","AAAAAAAAAAAAAAAAAAAAAABI AAAAAAAAAAAAAAAAAAAAAABJ", "AAAAAAAAAAAAAAAAAAAAAABK AAAAAAAAAAAAAAAAAAAAAABL","AAAAAAAAAAAAAAAAAAAAAABM AAAAAAAAAAAAAAAAAAAAAABN", "AAAAAAAAAAAAAAAAAAAAAABO AAAAAAAAAAAAAAAAAAAAAABP","AAAAAAAAAAAAAAAAAAAAAABQ AAAAAAAAAAAAAAAAAAAAAABR", "AAAAAAAAAAAAAAAAAAAAAABS AAAAAAAAAAAAAAAAAAAAAABT","AAAAAAAAAAAAAAAAAAAAAABU AAAAAAAAAAAAAAAAAAAAAABV", "AAAAAAAAAAAAAAAAAAAAAABW AAAAAAAAAAAAAAAAAAAAAABX","AAAAAAAAAAAAAAAAAAAAAABY AAAAAAAAAAAAAAAAAAAAAABZ", "AAAAAAAAAAAAAAAAAAAAAACA AAAAAAAAAAAAAAAAAAAAAACB","AAAAAAAAAAAAAAAAAAAAAACC AAAAAAAAAAAAAAAAAAAAAACD", "AAAAAAAAAAAAAAAAAAAAAACE AAAAAAAAAAAAAAAAAAAAAACF","AAAAAAAAAAAAAAAAAAAAAACG AAAAAAAAAAAAAAAAAAAAAACH", "AAAAAAAAAAAAAAAAAAAAAACI AAAAAAAAAAAAAAAAAAAAAACJ","AAAAAAAAAAAAAAAAAAAAAACK AAAAAAAAAAAAAAAAAAAAAACL", "AAAAAAAAAAAAAAAAAAAAAACM AAAAAAAAAAAAAAAAAAAAAACN","AAAAAAAAAAAAAAAAAAAAAACO AAAAAAAAAAAAAAAAAAAAAACP", "AAAAAAAAAAAAAAAAAAAAAACQ AAAAAAAAAAAAAAAAAAAAAACR","AAAAAAAAAAAAAAAAAAAAAACS AAAAAAAAAAAAAAAAAAAAAACT", "AAAAAAAAAAAAAAAAAAAAAACU AAAAAAAAAAAAAAAAAAAAAACV","AAAAAAAAAAAAAAAAAAAAAACW AAAAAAAAAAAAAAAAAAAAAACX", "AAAAAAAAAAAAAAAAAAAAAACY AAAAAAAAAAAAAAAAAAAAAACZ","AAAAAAAAAAAAAAAAAAAAAADA AAAAAAAAAAAAAAAAAAAAAADB", "AAAAAAAAAAAAAAAAAAAAAADC AAAAAAAAAAAAAAAAAAAAAADD","AAAAAAAAAAAAAAAAAAAAAADE AAAAAAAAAAAAAAAAAAAAAADF", "AAAAAAAAAAAAAAAAAAAAAADG AAAAAAAAAAAAAAAAAAAAAADH","AAAAAAAAAAAAAAAAAAAAAADI AAAAAAAAAAAAAAAAAAAAAADJ", "AAAAAAAAAAAAAAAAAAAAAADK AAAAAAAAAAAAAAAAAAAAAADL","AAAAAAAAAAAAAAAAAAAAAADM AAAAAAAAAAAAAAAAAAAAAADN", "AAAAAAAAAAAAAAAAAAAAAADO AAAAAAAAAAAAAAAAAAAAAADP","AAAAAAAAAAAAAAAAAAAAAADQ AAAAAAAAAAAAAAAAAAAAAADR", "AAAAAAAAAAAAAAAAAAAAAADS AAAAAAAAAAAAAAAAAAAAAADT","AAAAAAAAAAAAAAAAAAAAAADU AAAAAAAAAAAAAAAAAAAAAADV"}

    Returns: -1

  18. {"NOTTHATHARDACASG NOTTHATHARDACASE","NOTTHATHARDACASG NOTTHATHARDACASF","NOTTHATHARDACASJ NOTTHATHARDACASH","NOTTHATHARDACASJ NOTTHATHARDACASI","NOTTHATHARDACASM NOTTHATHARDACASK","NOTTHATHARDACASM NOTTHATHARDACASL","NOTTHATHARDACASP NOTTHATHARDACASN","NOTTHATHARDACASP NOTTHATHARDACASO","NOTTHATHARDACASS NOTTHATHARDACASQ","NOTTHATHARDACASS NOTTHATHARDACASR","NOTTHATHARDACASV NOTTHATHARDACAST","NOTTHATHARDACASV NOTTHATHARDACASU","NOTTHATHARDACASY NOTTHATHARDACASW","NOTTHATHARDACASY NOTTHATHARDACASX","NOTTHATHARDACATB NOTTHATHARDACASZ","NOTTHATHARDACATB NOTTHATHARDACATA","NOTTHATHARDACATE NOTTHATHARDACATC","NOTTHATHARDACATE NOTTHATHARDACATD","NOTTHATHARDACATH NOTTHATHARDACATF","NOTTHATHARDACATH NOTTHATHARDACATG","NOTTHATHARDACATK NOTTHATHARDACATI","NOTTHATHARDACATK NOTTHATHARDACATJ","NOTTHATHARDACATN NOTTHATHARDACATL","NOTTHATHARDACATN NOTTHATHARDACATM","NOTTHATHARDACATQ NOTTHATHARDACATO","NOTTHATHARDACATQ NOTTHATHARDACATP","NOTTHATHARDACATT NOTTHATHARDACATR","NOTTHATHARDACATT NOTTHATHARDACATS","NOTTHATHARDACATW NOTTHATHARDACATU","NOTTHATHARDACATW NOTTHATHARDACATV","NOTTHATHARDACATZ NOTTHATHARDACATX","NOTTHATHARDACATZ NOTTHATHARDACATY","NOTTHATHARDACAUC NOTTHATHARDACAUA","NOTTHATHARDACAUC NOTTHATHARDACAUB","NOTTHATHARDACAUF NOTTHATHARDACAUD","NOTTHATHARDACAUF NOTTHATHARDACAUE","NOTTHATHARDACAUI NOTTHATHARDACAUG","NOTTHATHARDACAUI NOTTHATHARDACAUH","NOTTHATHARDACAUL NOTTHATHARDACAUJ","NOTTHATHARDACAUL NOTTHATHARDACAUK","NOTTHATHARDACAUO NOTTHATHARDACAUM","NOTTHATHARDACAUO NOTTHATHARDACAUN","NOTTHATHARDACAUR NOTTHATHARDACAUP","NOTTHATHARDACAUR NOTTHATHARDACAUQ","NOTTHATHARDACAUU NOTTHATHARDACAUS","NOTTHATHARDACAUU NOTTHATHARDACAUT","NOTTHATHARDACAUX NOTTHATHARDACAUV","NOTTHATHARDACAUX NOTTHATHARDACAUW","NOTTHATHARDACAVA NOTTHATHARDACAUY","NOTTHATHARDACAVA NOTTHATHARDACAUZ"}

    Returns: -1

    Slow down people that simply try all assignments.

  19. {"BIGCYCLEBIGCYCLEBIGCYC BIGCYCLEBIGCYCLEBIGCYD","BIGCYCLEBIGCYCLEBIGCYD BIGCYCLEBIGCYCLEBIGCYE","BIGCYCLEBIGCYCLEBIGCYE BIGCYCLEBIGCYCLEBIGCYF","BIGCYCLEBIGCYCLEBIGCYF BIGCYCLEBIGCYCLEBIGCYG","BIGCYCLEBIGCYCLEBIGCYG BIGCYCLEBIGCYCLEBIGCYH","BIGCYCLEBIGCYCLEBIGCYH BIGCYCLEBIGCYCLEBIGCYI","BIGCYCLEBIGCYCLEBIGCYI BIGCYCLEBIGCYCLEBIGCYJ","BIGCYCLEBIGCYCLEBIGCYJ BIGCYCLEBIGCYCLEBIGCYK","BIGCYCLEBIGCYCLEBIGCYK BIGCYCLEBIGCYCLEBIGCYL","BIGCYCLEBIGCYCLEBIGCYL BIGCYCLEBIGCYCLEBIGCYM","BIGCYCLEBIGCYCLEBIGCYM BIGCYCLEBIGCYCLEBIGCYN","BIGCYCLEBIGCYCLEBIGCYN BIGCYCLEBIGCYCLEBIGCYO","BIGCYCLEBIGCYCLEBIGCYO BIGCYCLEBIGCYCLEBIGCYP","BIGCYCLEBIGCYCLEBIGCYP BIGCYCLEBIGCYCLEBIGCYQ","BIGCYCLEBIGCYCLEBIGCYQ BIGCYCLEBIGCYCLEBIGCYR","BIGCYCLEBIGCYCLEBIGCYR BIGCYCLEBIGCYCLEBIGCYS","BIGCYCLEBIGCYCLEBIGCYS BIGCYCLEBIGCYCLEBIGCYT","BIGCYCLEBIGCYCLEBIGCYT BIGCYCLEBIGCYCLEBIGCYU","BIGCYCLEBIGCYCLEBIGCYU BIGCYCLEBIGCYCLEBIGCYV","BIGCYCLEBIGCYCLEBIGCYV BIGCYCLEBIGCYCLEBIGCYW","BIGCYCLEBIGCYCLEBIGCYW BIGCYCLEBIGCYCLEBIGCYX","BIGCYCLEBIGCYCLEBIGCYX BIGCYCLEBIGCYCLEBIGCYY","BIGCYCLEBIGCYCLEBIGCYY BIGCYCLEBIGCYCLEBIGCYZ","BIGCYCLEBIGCYCLEBIGCYZ BIGCYCLEBIGCYCLEBIGCZA","BIGCYCLEBIGCYCLEBIGCZA BIGCYCLEBIGCYCLEBIGCZB","BIGCYCLEBIGCYCLEBIGCZB BIGCYCLEBIGCYCLEBIGCZC","BIGCYCLEBIGCYCLEBIGCZC BIGCYCLEBIGCYCLEBIGCZD","BIGCYCLEBIGCYCLEBIGCZD BIGCYCLEBIGCYCLEBIGCZE","BIGCYCLEBIGCYCLEBIGCZE BIGCYCLEBIGCYCLEBIGCZF","BIGCYCLEBIGCYCLEBIGCZF BIGCYCLEBIGCYCLEBIGCZG","BIGCYCLEBIGCYCLEBIGCZG BIGCYCLEBIGCYCLEBIGCZH","BIGCYCLEBIGCYCLEBIGCZH BIGCYCLEBIGCYCLEBIGCZI","BIGCYCLEBIGCYCLEBIGCZI BIGCYCLEBIGCYCLEBIGCZJ","BIGCYCLEBIGCYCLEBIGCZJ BIGCYCLEBIGCYCLEBIGCZK","BIGCYCLEBIGCYCLEBIGCZK BIGCYCLEBIGCYCLEBIGCZL","BIGCYCLEBIGCYCLEBIGCZL BIGCYCLEBIGCYCLEBIGCZM","BIGCYCLEBIGCYCLEBIGCZM BIGCYCLEBIGCYCLEBIGCZN","BIGCYCLEBIGCYCLEBIGCZN BIGCYCLEBIGCYCLEBIGCZO","BIGCYCLEBIGCYCLEBIGCZO BIGCYCLEBIGCYCLEBIGCZP","BIGCYCLEBIGCYCLEBIGCZP BIGCYCLEBIGCYCLEBIGCZQ","BIGCYCLEBIGCYCLEBIGCZQ BIGCYCLEBIGCYCLEBIGCZR","BIGCYCLEBIGCYCLEBIGCZR BIGCYCLEBIGCYCLEBIGCZS","BIGCYCLEBIGCYCLEBIGCZS BIGCYCLEBIGCYCLEBIGCZT","BIGCYCLEBIGCYCLEBIGCZT BIGCYCLEBIGCYCLEBIGCZU","BIGCYCLEBIGCYCLEBIGCZU BIGCYCLEBIGCYCLEBIGCZV","BIGCYCLEBIGCYCLEBIGCZV BIGCYCLEBIGCYCLEBIGCZW","BIGCYCLEBIGCYCLEBIGCZW BIGCYCLEBIGCYCLEBIGCZX","BIGCYCLEBIGCYCLEBIGCZX BIGCYCLEBIGCYCLEBIGCZY","BIGCYCLEBIGCYCLEBIGCZY BIGCYCLEBIGCYCLEBIGCZZ","BIGCYCLEBIGCYCLEBIGCZZ BIGCYCLEBIGCYCLEBIGCYC"}

    Returns: 49

    Long cycle.

  20. {"HUGYCLEBIGCYCLEBIGCYD HUGYCLEBIGCYCLEBIGCYC","HUGYCLEBIGCYCLEBIGCYE HUGYCLEBIGCYCLEBIGCYD","HUGYCLEBIGCYCLEBIGCYF HUGYCLEBIGCYCLEBIGCYE","HUGYCLEBIGCYCLEBIGCYG HUGYCLEBIGCYCLEBIGCYF","HUGYCLEBIGCYCLEBIGCYH HUGYCLEBIGCYCLEBIGCYG","HUGYCLEBIGCYCLEBIGCYI HUGYCLEBIGCYCLEBIGCYH","HUGYCLEBIGCYCLEBIGCYJ HUGYCLEBIGCYCLEBIGCYI","HUGYCLEBIGCYCLEBIGCYK HUGYCLEBIGCYCLEBIGCYJ","HUGYCLEBIGCYCLEBIGCYL HUGYCLEBIGCYCLEBIGCYK","HUGYCLEBIGCYCLEBIGCYM HUGYCLEBIGCYCLEBIGCYL","HUGYCLEBIGCYCLEBIGCYN HUGYCLEBIGCYCLEBIGCYM","HUGYCLEBIGCYCLEBIGCYO HUGYCLEBIGCYCLEBIGCYN","HUGYCLEBIGCYCLEBIGCYP HUGYCLEBIGCYCLEBIGCYO","HUGYCLEBIGCYCLEBIGCYQ HUGYCLEBIGCYCLEBIGCYP","HUGYCLEBIGCYCLEBIGCYR HUGYCLEBIGCYCLEBIGCYQ","HUGYCLEBIGCYCLEBIGCYS HUGYCLEBIGCYCLEBIGCYR","HUGYCLEBIGCYCLEBIGCYT HUGYCLEBIGCYCLEBIGCYS","HUGYCLEBIGCYCLEBIGCYU HUGYCLEBIGCYCLEBIGCYT","HUGYCLEBIGCYCLEBIGCYV HUGYCLEBIGCYCLEBIGCYU","HUGYCLEBIGCYCLEBIGCYW HUGYCLEBIGCYCLEBIGCYV","HUGYCLEBIGCYCLEBIGCYX HUGYCLEBIGCYCLEBIGCYW","HUGYCLEBIGCYCLEBIGCYY HUGYCLEBIGCYCLEBIGCYX","HUGYCLEBIGCYCLEBIGCYZ HUGYCLEBIGCYCLEBIGCYY","HUGYCLEBIGCYCLEBIGCZA HUGYCLEBIGCYCLEBIGCYZ","HUGYCLEBIGCYCLEBIGCZB HUGYCLEBIGCYCLEBIGCZA","HUGYCLEBIGCYCLEBIGCZC HUGYCLEBIGCYCLEBIGCZB","HUGYCLEBIGCYCLEBIGCZD HUGYCLEBIGCYCLEBIGCZC","HUGYCLEBIGCYCLEBIGCZE HUGYCLEBIGCYCLEBIGCZD","HUGYCLEBIGCYCLEBIGCZF HUGYCLEBIGCYCLEBIGCZE","HUGYCLEBIGCYCLEBIGCZG HUGYCLEBIGCYCLEBIGCZF","HUGYCLEBIGCYCLEBIGCZH HUGYCLEBIGCYCLEBIGCZG","HUGYCLEBIGCYCLEBIGCZI HUGYCLEBIGCYCLEBIGCZH","HUGYCLEBIGCYCLEBIGCZJ HUGYCLEBIGCYCLEBIGCZI","HUGYCLEBIGCYCLEBIGCZK HUGYCLEBIGCYCLEBIGCZJ","HUGYCLEBIGCYCLEBIGCZL HUGYCLEBIGCYCLEBIGCZK","HUGYCLEBIGCYCLEBIGCZM HUGYCLEBIGCYCLEBIGCZL","HUGYCLEBIGCYCLEBIGCZN HUGYCLEBIGCYCLEBIGCZM","HUGYCLEBIGCYCLEBIGCZO HUGYCLEBIGCYCLEBIGCZN","HUGYCLEBIGCYCLEBIGCZP HUGYCLEBIGCYCLEBIGCZO","HUGYCLEBIGCYCLEBIGCZQ HUGYCLEBIGCYCLEBIGCZP","HUGYCLEBIGCYCLEBIGCZR HUGYCLEBIGCYCLEBIGCZQ","HUGYCLEBIGCYCLEBIGCZS HUGYCLEBIGCYCLEBIGCZR","HUGYCLEBIGCYCLEBIGCZT HUGYCLEBIGCYCLEBIGCZS","HUGYCLEBIGCYCLEBIGCZU HUGYCLEBIGCYCLEBIGCZT","HUGYCLEBIGCYCLEBIGCZV HUGYCLEBIGCYCLEBIGCZU","HUGYCLEBIGCYCLEBIGCZW HUGYCLEBIGCYCLEBIGCZV","HUGYCLEBIGCYCLEBIGCZX HUGYCLEBIGCYCLEBIGCZW","HUGYCLEBIGCYCLEBIGCZY HUGYCLEBIGCYCLEBIGCZX","HUGYCLEBIGCYCLEBIGCZZ HUGYCLEBIGCYCLEBIGCZY","HUGYCLEBIGCYCLEBIGCYC HUGYCLEBIGCYCLEBIGCZZ"}

    Returns: 49

    A cycle going the other way.

  21. {"A THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCO","A THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCP","B THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCP","B THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCQ","C THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCQ","C THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCR","D THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCR","D THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCS","E THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCS","E THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCT","F THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCT","F THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCU","G THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCU","G THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCV","H THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCV","H THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCW","I THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCW","I THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCX","J THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCX","J THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCY","K THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCY","K THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCZ","L THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCZ","L THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDA","M THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDA","M THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDB","N THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDB","N THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDC","O THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDC","O THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDD","P THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDD","P THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDE","Q THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDE","Q THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDF","R THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDF","R THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDG","S THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDG","S THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDH","T THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDH","T THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDI","U THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDI","U THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDJ","V THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDJ","V THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDK","W THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDK","W THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDL","X THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDL","X THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDM","Y THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDM","Y THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCO"}

    Returns: 49

    Long names for parents, and also a difficult-to-find parent cycle.

  22. {"A THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCO","A THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCP","B THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCP","B THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCQ","C THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCQ","C THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCR","D THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCR","D THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCS","E THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCS","E THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCT","F THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCT","F THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCU","G THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCU","G THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCV","H THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCV","H THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCW","I THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCW","I THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCX","J THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCX","J THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCY","K THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCY","K THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCZ","L THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCZ","L THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDA","M THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDA","M THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDB","N THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDB","N THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDC","O THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDC","O THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDD","P THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDD","P THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDE","Q THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDE","Q THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDF","R THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDF","R THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDG","S THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDG","S THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDH","T THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDH","T THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDI","U THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDI","U THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDJ","V THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDJ","V THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDK","W THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDK","W THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDL","X THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDL","X THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDM","THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITCO m","THISPARENTHASAVERYVERBOSENAMEWHOKNOWSHOWLONGITDL m"}

    Returns: 49

    Test a long noncyclic inference chain

  23. {"TESTINGALONGBIGHUGEPROBL TESTINGALONGBIGHUGEPROBM","TESTINGALONGBIGHUGEPROBL TESTINGALONGBIGHUGEPROBN","TESTINGALONGBIGHUGEPROBL TESTINGALONGBIGHUGEPROBO","TESTINGALONGBIGHUGEPROBL TESTINGALONGBIGHUGEPROBP","TESTINGALONGBIGHUGEPROBL TESTINGALONGBIGHUGEPROBQ","TESTINGALONGBIGHUGEPROBL TESTINGALONGBIGHUGEPROBR","TESTINGALONGBIGHUGEPROBL TESTINGALONGBIGHUGEPROBS","TESTINGALONGBIGHUGEPROBL TESTINGALONGBIGHUGEPROBT","TESTINGALONGBIGHUGEPROBL TESTINGALONGBIGHUGEPROBU","TESTINGALONGBIGHUGEPROBM TESTINGALONGBIGHUGEPROBN","TESTINGALONGBIGHUGEPROBM TESTINGALONGBIGHUGEPROBO","TESTINGALONGBIGHUGEPROBM TESTINGALONGBIGHUGEPROBP","TESTINGALONGBIGHUGEPROBM TESTINGALONGBIGHUGEPROBQ","TESTINGALONGBIGHUGEPROBM TESTINGALONGBIGHUGEPROBR","TESTINGALONGBIGHUGEPROBM TESTINGALONGBIGHUGEPROBS","TESTINGALONGBIGHUGEPROBM TESTINGALONGBIGHUGEPROBT","TESTINGALONGBIGHUGEPROBM TESTINGALONGBIGHUGEPROBU","TESTINGALONGBIGHUGEPROBN TESTINGALONGBIGHUGEPROBO","TESTINGALONGBIGHUGEPROBN TESTINGALONGBIGHUGEPROBP","TESTINGALONGBIGHUGEPROBN TESTINGALONGBIGHUGEPROBQ","TESTINGALONGBIGHUGEPROBN TESTINGALONGBIGHUGEPROBR","TESTINGALONGBIGHUGEPROBN TESTINGALONGBIGHUGEPROBS","TESTINGALONGBIGHUGEPROBN TESTINGALONGBIGHUGEPROBT","TESTINGALONGBIGHUGEPROBN TESTINGALONGBIGHUGEPROBU","TESTINGALONGBIGHUGEPROBO TESTINGALONGBIGHUGEPROBP","TESTINGALONGBIGHUGEPROBO TESTINGALONGBIGHUGEPROBQ","TESTINGALONGBIGHUGEPROBO TESTINGALONGBIGHUGEPROBR","TESTINGALONGBIGHUGEPROBO TESTINGALONGBIGHUGEPROBS","TESTINGALONGBIGHUGEPROBO TESTINGALONGBIGHUGEPROBT","TESTINGALONGBIGHUGEPROBO TESTINGALONGBIGHUGEPROBU","TESTINGALONGBIGHUGEPROBP TESTINGALONGBIGHUGEPROBQ","TESTINGALONGBIGHUGEPROBP TESTINGALONGBIGHUGEPROBR","TESTINGALONGBIGHUGEPROBP TESTINGALONGBIGHUGEPROBS","TESTINGALONGBIGHUGEPROBP TESTINGALONGBIGHUGEPROBT","TESTINGALONGBIGHUGEPROBP TESTINGALONGBIGHUGEPROBU","TESTINGALONGBIGHUGEPROBQ TESTINGALONGBIGHUGEPROBR","TESTINGALONGBIGHUGEPROBQ TESTINGALONGBIGHUGEPROBS","TESTINGALONGBIGHUGEPROBQ TESTINGALONGBIGHUGEPROBT","TESTINGALONGBIGHUGEPROBQ TESTINGALONGBIGHUGEPROBU","TESTINGALONGBIGHUGEPROBR TESTINGALONGBIGHUGEPROBS","TESTINGALONGBIGHUGEPROBR TESTINGALONGBIGHUGEPROBT","TESTINGALONGBIGHUGEPROBR TESTINGALONGBIGHUGEPROBU","TESTINGALONGBIGHUGEPROBS TESTINGALONGBIGHUGEPROBT","TESTINGALONGBIGHUGEPROBS TESTINGALONGBIGHUGEPROBU","TESTINGALONGBIGHUGEPROBT TESTINGALONGBIGHUGEPROBU"}

    Returns: 2

    Illegal because of parent count

  24. {"A B","A C","A B","A C","A m","A m"}

    Returns: -1

    Test repeated parents, repeated sex

  25. {"Z A", "Z B", "ZZ A", "ZZ E", "Y B", "Y C", "X C", "X D", "XX D", "XX E"}

    Returns: 9

  26. {"Z A", "Z B", "ZZ A", "ZZ E", "Y B", "Y C", "X C", "X D", "XX D", "D f"}

    Returns: -1

  27. {"Z A", "Z B", "ZZ A", "ZZ E", "Y B", "Y C", "X C", "X D", "XX D", "D f", "B f"}

    Returns: -1

  28. {"Z A", "Z B", "ZZ A", "ZZ E", "Y B", "Y C", "X C", "X D", "XX D", "D f", "B m"}

    Returns: 10

  29. {"Z A", "Z B", "ZZ A", "ZZ E", "Y B", "Y C", "X C", "X D", "XX D", "D f", "E m"}

    Returns: 10

  30. {"Z A", "Z B", "ZZ A", "ZZ E", "Y B", "Y C", "X C", "X D", "XX D", "D f", "E f"}

    Returns: -1

  31. {"A B", "A C", "D A", "D B", "E A", "E D", "X E", "X B"}

    Returns: -1

  32. {"A B", "A C", "R A", "R C", "W A", "W B"}

    Returns: 5

  33. {"A B", "A C", "R A", "R C", "W A", "A f", "B R", "W B"}

    Returns: 6

  34. {"A B", "A C", "R A", "R C", "W A", "A f", "W B", "B R"}

    Returns: 6

  35. {"Z A", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W E", "V E", "V F", "Q A", "Q F"}

    Returns: -1

  36. {"Z A", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W E", "V E", "V F", "Q A", "Q F", "Q f"}

    Returns: -1

  37. {"Z A", "Q f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W E", "V E", "V F", "Q A", "Q F"}

    Returns: -1

  38. {"Z A", "Q f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W E", "V E", "V F", "Q A", "Q F", "A m"}

    Returns: -1

  39. {"Z f", "Y f", "W f", "V f", "X f", "Z A", "Q f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W E", "V E", "V F", "Q A", "Q F"}

    Returns: -1

  40. {"Z f", "Y f", "W f", "V f", "X f", "Z A", "Q f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W E", "V E", "V F", "Q A", "Q F", "F f"}

    Returns: -1

  41. {"Z f", "Y f", "W f", "V f", "X f", "Z A", "Q f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W E", "V E", "V F", "Q A", "Q F", "F f", "E m"}

    Returns: -1

  42. {"Z f", "Y f", "W f", "V f", "X f", "Z A", "Q f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W E", "V E", "V F", "Q A", "Q F", "F f", "E m", "U W", "U A"}

    Returns: -1

  43. {"Z f", "Y f", "W f", "V f", "X f", "Z A", "Q f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W E", "V E", "V F", "Q A", "Q F", "F f", "E m", "U W", "U A", "X f", "Z A", "Q f"}

    Returns: -1

    a cycle of parents of length 6 (A - F) F is female --> A is male Also, W and A are parents of U, so they should have different genders. W is female - ok

  44. {"Z f", "Y f", "W f", "V f", "X f", "Z A", "Q f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W E", "V E", "V F", "Q A", "Q F", "F m", "E f", "U W", "U A", "X f", "Z A", "Q f"}

    Returns: 21

    Similar to 42 a cycle of parents of length 6 (A - F) F is male --> A is female Also, W and A are parents of U, so they should have different genders. W is female - contradiction

  45. {"Z f", "Y f", "W f", "V f", "X f", "Z A", "Q f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "X D", "X D", "W E", "V E", "V F", "Q A", "Q F", "F m", "E f", "U W", "U A", "X f", "Z A", "Q f"}

    Returns: 23

  46. {"Z f", "Y f", "W f", "V f", "X f", "Z A", "Q f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W E", "V E", "V F", "Q A", "Q F", "F f", "E m", "U W", "U A", "X f", "Z A", "Q f", "X D"}

    Returns: -1

  47. {"Z f", "Y f", "W f", "V f", "X f", "Z A", "Q f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W E", "V E", "V F", "Q A", "Q F", "F f", "E m", "U W", "U A", "X f", "Z A", "Q f", "X S"}

    Returns: 25

  48. {"X S", "Z f", "Y f", "W f", "V f", "X f", "Z A", "Q f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W E", "V E", "V F", "Q A", "Q F", "F f", "E m", "U W", "U A", "X f", "Z A", "Q f"}

    Returns: 12

  49. {"Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX C", "ZZZ E", "ZZZ G", "YYY G", "YYY H", "XXX F", "XXX H" }

    Returns: -1

  50. {"Z A", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX C", "ZZZ E", "ZZZ G", "YYY G", "YYY H", "XXX F", "XXX H", "H f", "HHH f" }

    Returns: -1

  51. {"Z A", "HHH f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX C", "ZZZ E", "ZZZ G", "YYY G", "YYY H", "XXX F", "XXX H", "H f", "HHH f" }

    Returns: -1

  52. {"Z A", "HHH f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX C", "ZZZ E", "ZZZ G", "YYY G", "YYY H", "XXX F", "XXX H", "H f", "HHH f", "B f" }

    Returns: 23

  53. {"Z A", "HHH f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX C", "ZZZ E", "ZZZ G", "YYY G", "YYY H", "XXX F", "XXX H", "H f", "HHH f", "B m" }

    Returns: -1

  54. {"Z A", "HHH f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX C", "ZZZ E", "ZZZ G", "YYY G", "YYY H", "XXX F", "XXX H", "H f", "HHH f", "A f" }

    Returns: -1

  55. {"Z A", "HHH f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX C", "ZZZ E", "ZZZ G", "YYY G", "YYY H", "XXX F", "XXX H", "H f", "HHH f", "A m" }

    Returns: 23

  56. {"Z A", "HHH f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX C", "ZZZ E", "ZZZ G", "YYY G", "YYY H", "XXX F", "XXX H", "H f", "HHH f", "A f", "G m", "E f", "F m", "C f", "B m", "A f", "D m" }

    Returns: -1

  57. {"Z A", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX C", "ZZZ E", "ZZZ G", "YYY G", "YYY H", "XXX F", "XXX H", "WW H", "WW A" }

    Returns: 21

  58. {"Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX C", "ZZZ E", "ZZZ G", "YYY G", "YYY H", "XXX F", "XXX H", "WW H", "WW C" }

    Returns: 20

  59. {"Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX C", "ZZZ E", "ZZZ G", "YYY G", "YYY H", "XXX F", "XXX H" }

    Returns: -1

  60. {"Z A", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX G", "ZZZ G", "ZZZ B" }

    Returns: -1

  61. {"Z A", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX G", "ZZZ G", "ZZZ B", "I A", "I G" }

    Returns: 17

  62. {"Z A", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX G", "ZZZ G", "ZZZ B", "I A", "I F" }

    Returns: -1

  63. {"Z A", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX G", "ZZZ G", "ZZZ B", "C f", "D m", "F m" }

    Returns: -1

  64. {"Z A", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX G", "ZZZ G", "ZZZ B", "C f", "D m", "F f" }

    Returns: 18

  65. {"Z A", "F f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX G", "ZZZ G", "ZZZ B", "C f", "D m" }

    Returns: 17

  66. {"Z A", "F f", "Z B", "Y B", "Y C", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX G", "ZZZ G", "C f", "D m" }

    Returns: 16

  67. {"Z A", "F f", "Z B", "Y B", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX G", "ZZZ G", "C f", "D m" }

    Returns: 15

  68. {"Z A", "G m", "Z B", "Y B", "X C", "X D", "W D", "W A", "ZZ B", "ZZ E", "YY E", "YY F", "XX F", "XX G", "ZZZ G", "C f" }

    Returns: 15

  69. {"HPZ ISK", "ISK MFK", "MFK UYW", "UYW GTZ", "GTZ POE", "POE SEI", "SEI KPI", "KPI EBT", "EBT QOA", "QOA BED", "BED TUS", "TUS WHI", "WHI HKW", "HKW SKY", "SKY QKV", "QKV UGI", "UGI PPU", "PPU DKL", "DKL ECO", "ECO HDZ", "HDZ ZYS", "ZYS NDK", "NDK KAU", "KAU XPW", "XPW POO", "POO OVG", "OVG SFY", "SFY ICC", "ICC DFY", "DFY LFI", "LFI VQM", "VQM IVK", "IVK XNS", "XNS EEG", "EEG UBI", "UBI ZHZ", "ZHZ XSQ", "XSQ KDB", "KDB NMF", "NMF XBU", "XBU WGG", "WGG ROB", "ROB PWK", "PWK WPN", "WPN IDZ", "IDZ IMW", "IMW SIB", "SIB KXW", "KXW LGP", "LGP HPZ"}

    Returns: 49

  70. {"HPZ ISK", "ISK MFK", "MFK UYW", "UYW GTZ", "GTZ POE", "POE SEI", "SEI KPI", "KPI EBT", "EBT QOA", "QOA BED", "BED TUS", "TUS WHI", "WHI HKW", "HKW SKY", "SKY QKV", "QKV UGI", "UGI PPU", "PPU DKL", "DKL ECO", "ECO HDZ", "HDZ ZYS", "ZYS NDK", "NDK KAU", "KAU XPW", "XPW POO", "POO OVG", "OVG SFY", "SFY ICC", "ICC DFY", "DFY LFI", "LFI VQM", "VQM IVK", "IVK XNS", "XNS EEG", "EEG UBI", "UBI ZHZ", "ZHZ XSQ", "XSQ KDB", "KDB NMF", "NMF XBU", "XBU WGG", "WGG ROB", "ROB PWK", "PWK WPN", "WPN IDZ", "IDZ IMW", "IMW SIB", "SIB KXW", "KXW LGP"}

    Returns: -1

  71. {"HPZ ISK", "ISK MFK", "MFK UYW", "UYW GTZ", "GTZ POE", "SEI KPI", "KPI EBT", "EBT QOA", "QOA BED", "BED TUS", "TUS WHI", "WHI HKW", "HKW SKY", "SKY QKV", "QKV UGI", "UGI PPU", "PPU DKL", "DKL ECO", "ECO HDZ", "HDZ ZYS", "ZYS NDK", "NDK KAU", "KAU XPW", "XPW POO", "POO OVG", "OVG SFY", "SFY ICC", "ICC DFY", "DFY LFI", "LFI VQM", "VQM IVK", "IVK XNS", "XNS EEG", "EEG UBI", "UBI ZHZ", "ZHZ XSQ", "XSQ KDB", "KDB NMF", "NMF XBU", "XBU WGG", "WGG ROB", "ROB PWK", "PWK WPN", "WPN IDZ", "IDZ IMW", "IMW SIB", "SIB KXW", "KXW LGP", "LGP HPZ"}

    Returns: -1

  72. {"IIO WBF", "EGM IIO", "JPY EGM", "GOV JPY", "XAR GOV", "NIY XAR", "MTL NIY", "YRE MTL", "TVK YRE", "OZG TVK", "TAK OZG", "HTL TAK", "RJC HTL", "RKC RJC", "VHK RKC", "KYJ VHK", "GQV KYJ", "PXK GQV", "MMW PXK", "GZN MMW", "LPW GZN", "CSN LPW", "LZB CSN", "SNL LZB", "HEO SNL", "RQS HEO", "XNT RQS", "PGE XNT", "GMG PGE", "OKS GMG", "BLU OKS", "RVK BLU", "WCJ RVK", "RQF WCJ", "SOP RQF", "YHY SOP", "WDV YHY", "ILB WDV", "JIF ILB", "DYB JIF", "JBU DYB", "YNH JBU", "ZAJ YNH", "KYN ZAJ", "SLE KYN", "LKF SLE", "CYU LKF", "NQI CYU", "LWC NQI", "WBF LWC"}

    Returns: 49

  73. {"IIO WBF", "EGM IIO", "GOV JPY", "XAR GOV", "NIY XAR", "MTL NIY", "YRE MTL", "TVK YRE", "OZG TVK", "TAK OZG", "HTL TAK", "RJC HTL", "RKC RJC", "VHK RKC", "KYJ VHK", "GQV KYJ", "PXK GQV", "MMW PXK", "GZN MMW", "LPW GZN", "CSN LPW", "LZB CSN", "SNL LZB", "HEO SNL", "RQS HEO", "XNT RQS", "PGE XNT", "GMG PGE", "OKS GMG", "BLU OKS", "RVK BLU", "WCJ RVK", "RQF WCJ", "SOP RQF", "YHY SOP", "WDV YHY", "ILB WDV", "JIF ILB", "DYB JIF", "JBU DYB", "YNH JBU", "ZAJ YNH", "KYN ZAJ", "SLE KYN", "LKF SLE", "CYU LKF", "NQI CYU", "LWC NQI", "WBF LWC"}

    Returns: -1

  74. {"FSC GGL", "FSC f", "KSF FSC", "MGT KSF", "IYP MGT", "RXT IYP", "IYP m", "BIK RXT", "YNF BIK", "BWS YNF", "AGV BWS", "YXV AGV", "ECP YXV", "VRZ ECP", "KAB VRZ", "LDG KAB", "PVP LDG", "KXC PVP", "PHK KXC", "LLC PHK", "BLQ LLC", "MMQ BLQ", "CBV MMQ", "IQQ CBV", "NSN IQQ", "VJW NSN", "GGL VJW", "IYP m"}

    Returns: 26

  75. {"FSC GGL", "FSC f", "KSF FSC", "MGT KSF", "IYP MGT", "RXT IYP", "IYP m", "BIK RXT", "YNF BIK", "BWS YNF", "AGV BWS", "YXV AGV", "ECP YXV", "VRZ ECP", "KAB VRZ", "LDG KAB", "PVP LDG", "KXC PVP", "PHK KXC", "LLC PHK", "BLQ LLC", "MMQ BLQ", "CBV MMQ", "IQQ CBV", "NSN IQQ", "IYP m", "VJW NSN", "GGL VJW"}

    Returns: 27

  76. {"FSC GGL", "FSC f", "KSF FSC", "MGT KSF", "IYP MGT", "RXT IYP", "IYP f", "BIK RXT", "YNF BIK", "BWS YNF", "AGV BWS", "YXV AGV", "ECP YXV", "VRZ ECP", "KAB VRZ", "LDG KAB", "PVP LDG", "KXC PVP", "PHK KXC", "LLC PHK", "BLQ LLC", "MMQ BLQ", "CBV MMQ", "IQQ CBV", "NSN IQQ", "IYP m", "VJW NSN", "GGL VJW"}

    Returns: 25

  77. {"FSC GGL", "FSC f", "KSF FSC", "MGT KSF", "IYP MGT", "RXT IYP", "BIK RXT", "YNF BIK", "BWS YNF", "AGV BWS", "YXV AGV", "ECP YXV", "VRZ ECP", "KAB VRZ", "LDG KAB", "PVP LDG", "KXC PVP", "PHK KXC", "LLC PHK", "BLQ LLC", "MMQ BLQ", "CBV MMQ", "IQQ CBV", "NSN IQQ", "IYP m", "VJW NSN", "GGL VJW", "IYP f" }

    Returns: 26

  78. {"A C", "B C", "E B", "D B", "Z A", "Y A", "R Z", "R E"}

    Returns: -1

  79. {"A C", "B C", "T C", "E B", "D B", "Z A", "Y A", "R Z", "R E", "C R"}

    Returns: 9

  80. {"A C", "B C", "T C", "E B", "D B", "Z A", "Y A", "R Z", "R E", "T R"}

    Returns: -1

  81. {"A f", "A B", "A C", "C D", "D f", "C A" }

    Returns: 5

  82. {"W f","Q f","Q A","Q F","F m","U W","U A"}

    Returns: 6

  83. {"A C", "B C", "Z A", "Z B" }

    Returns: -1

  84. {"A C", "B C", "AA A", "AA B", "BB A", "BB B", "CC AA", "CC BB"}

    Returns: -1

  85. {"A D", "A E", "B E", "B F", "C F", "C D", "AB AC", "AD AE", "AF AG", "AH IC", "AJ KC", "AL MC", "AN OC", "AP QC", "AR SC", "AT UC", "AV WC", "AX YC", "AZ AA", "ZB ZC", "ZD ZE", "ZF ZG", "ZH IZ", "ZJ KZ", "ZL MZ", "ZN OZ", "ZP QZ", "ZR SZ", "ZT UZ", "ZV WZ", "ZX YZ", "ZZ AZ", "YB UC", "YD UE", "YF UG", "YH IU", "YJ KU", "YL MU", "YN OU", "YP QU", "YR SU", "YT UU", "YV WU", "YX YU", "YZ AU", "A A", "B DE", "F GH", "I JK", "L MN" }

    Returns: 5

  86. {"A X", "A Y", "B Y", "B Z", "C Z", "C X" }

    Returns: 5

  87. {"B J", "B G", "J m", "C G", "C A", "A f" }

    Returns: 5

  88. {"BA TA", "BA TB", "BB TB", "BB TC", "BC TC", "BC TD", "BE TD", "BE TE", "BF TE", "BF TA" }

    Returns: 9

  89. {"XXA AXX", "XXA BXX", "XXB BXX", "XXB CXX", "XXC CXX", "XXC DXX", "XXD DXX", "XXD EXX", "XXE EXX", "XXE AXX" }

    Returns: 9

  90. {"D m", "B f", "C A", "C B", "B A", "B D" }

    Returns: 5

  91. {"A B", "A C", "D B", "D E", "E m", "C f" }

    Returns: 5

  92. {"X A", "X B", "Y B", "Y C", "Z C", "Z A" }

    Returns: 5

  93. {"Z A", "Z B", "Y B", "Y C", "X C", "X D", "V D", "V E", "W E", "W A" }

    Returns: 9

  94. {"A X", "A Y", "B X", "B Z", "C Y", "C Z" }

    Returns: 5

  95. {"D A", "D B", "E B", "E C", "F A", "F C", "D A" }

    Returns: 5

  96. {"CHILDA A", "A m", "CHILDA B", "CHILDB B", "CHILDB C", "C f" }

    Returns: 5

  97. {"C A", "C B", "E B", "E D", "A f", "D m" }

    Returns: 5

  98. {"F m", "F m", "F m", "F M", "M f", "F m", "Q P", "P QP", "PQ Q", "AAAAA AAAAAAAAA", "FFF FFPP", "FFF FFPPP", "FF FFPP", "FF FFPPP", "X Y", "X Z", "K N", "K M", "KK N", "KK Z", "XX Y", "XX M", "C PA", "C PC", "B PB", "B PC", "A PA", "A PB" }

    Returns: 27

  99. {"A X", "A Y", "B X", "B Z", "Y m", "Z f" }

    Returns: 5

  100. {"Q f", "B A", "B C", "D C", "D E", "F E", "F G", "H G", "E m", "H I", "J I", "J K", "L M", "N M", "N O", "P O", "P Q", "R Q", "L K", "R S" }

    Returns: 18

  101. {"D A", "D B", "E B", "E C", "F A", "F C" }

    Returns: 5

  102. {"C A", "C B", "E A", "E D", "B f", "D m" }

    Returns: 5

  103. {"A Z", "A Y", "B Y", "B X", "C X", "C Z" }

    Returns: 5

  104. {"CA PB", "CA PC", "CB PA", "CB PC", "CC PA", "CC PB", "G m", "G f" }

    Returns: 5

  105. {"A B", "A C", "D C", "E f", "B m", "D E" }

    Returns: 5

  106. {"F A", "F B", "G B", "G C", "H C", "H D", "I D", "I E", "A m", "E f" }

    Returns: 9

  107. {"A A" }

    Returns: 0

  108. {"A B", "A C", "B m", "D C", "D E", "E f" }

    Returns: 5

  109. {"A B", "A C", "A D" }

    Returns: 2

  110. {"BOB JOHN", "BOB MARIA", "ION MARIA", "ION KELLY", "JOHN m", "NAE KELLY", "NAE JHOANA", "TRUK JHOANA", "TRUK WW", "WW f" }

    Returns: 9

  111. {"A D", "A E", "B D", "B F", "C E", "C F" }

    Returns: 5

  112. {"C A", "C B", "D B", "A f", "G f", "F G", "F E", "D E" }

    Returns: 7

  113. {"X A", "X B", "Y B", "Y C", "Z A", "Z C" }

    Returns: 5

  114. {"ABB m", "AAA BAB", "ABA m", "AAA AAB", "AAA BAB", "BBB AAA", "BBB BBA", "BAB m", "BAB ABA", "BBB f", "BAA f", "AAB m", "AAA f", "BBB ABB", "ABB AAB", "AAB BAB", "BBA ABB", "BBA m", "BBB m", "BAB f", "BBA BBB", "BAB f", "ABA m", "ABA m", "BBA BBB", "BAA BAB", "BAA BAB", "BBA m", "ABA ABA", "ABA f", "BBA ABB", "ABB ABB", "BAA BBA", "BBB m", "AAA BBA", "AAB f", "ABB m", "AAB AAA", "BAA AAA", "AAA f", "BAA BAB", "AAB ABA", "AAA BBA", "ABA m", "ABA BAB", "AAB m", "BAB f", "BAB ABB", "ABA BAA", "AAA f" }

    Returns: 11

  115. {"A B", "A C", "D C", "D E", "B f", "E m" }

    Returns: 5

  116. {"B AAABABBAABAABBBBABBBAABBBBABABAABBBAAAABAAAABAAA", "B AAAAAAABABBBBAABBBAABAAABABBBBABBABABABBBBBBBBAA", "B AAABBAABBAABABBBAAAABBBBABBABBBBAABAAAABBBABABBB", "A BABAABBAAAAAAAABBBAAABBAAABBBBBABBABAAAABABBABBB", "B ABABBBAAABBBBABBABBAABBBBAAAAABAABAABAABABBABBAB", "A AABBAAAABBBAABAAAABAABABAAABBAABAAAAAABBAABBAAAB", "B BBAABBBBBBABAAABBABABBBBAAAABBAABAAAAABBAAAABAAB", "A BBBAAABAABAABBBBBBABAAABBBABBBABBAABAABBABBABABA", "B AAABBAABABBABBAAAABBBAABBBBABBAABBABBBABBABAABBB", "B BBBABBBAAABBAAAABBBABABAABABABBABAABBBABBBBBBABB", "A BAAAAAAABAABBABBABABABBBBAABBABAAABBBBBBABAABBAB", "B BABABBBBBABBBAABAAABBABBABABABBBAAABABBBABBAAABB", "B ABBABABAAAABBBAAAABABBBBBBABABABBBAAAABBBBBBBABA", "B BABBABBAABAABAAABABBAABAABABABAABBBBBAABAAABBBAA", "B AABBAABBBBBABABABBAABAAABBBBBBAAABAAAAAAAAABABBB", "B BABBABBBABAABBBBABBAABBBBABABABBAABABBAAAABBABAA", "B ABBBBABBABBABABBABBABAABBAABBAABBBBBAAABBBAABAAB", "B BBAAAABABBBBABBBBABBBABBBBBAAABBBAAABAAABBABBBAB", "B BBAAAABBBBAAAAAABABBAAABBABAAAAABAAABABBAABBABBA", "A AAAAAAAAABBAAABBAAAAABBABBAAAABABAABBAAAABAAAAAB", "B BBBAAAAABBBBBAAABBBAAABBAABAABABABAAABBAAAAAABBA", "A BABBBBABAAABABABBBAABBBBABAABBABABBBABABBABABBAA", "A BABBAABBAABBABBBBAABBBABAABBAABBAAAABBAAABABABAB", "B BBBBAABAABABAAABBBAABAABAABAAABBABBAAAAABAAABAAA", "A BBAAABABBABAABBBAABAABAABAAABBABAABBBAAABBABAABB", "B BBABAAAABBAAAAABBABBBBAABAAABBBBBAAABABAABABAAAA", "A AABBABBBBBBBBABABBABBBBBAAABBBABBBAABBBABAABABAA", "A BABBBBBBABAAAAABBAAAAAABABBBABBBAABBBAAAAAABABBA", "B BAAAABAAABBBBBBBBBABAAABAABBBABABBBABAABAABAAABB", "B BBAAAABBAAABBAAAABBABABABBBABBABBAABABABAABBBBBB", "A ABBBBAABAABAAAABABABABABBBABBBABABAAABABAAAABABB", "B AAAABBBABABABBBAABAAAAABAAABAAABBBBBBABBABABBBBA", "B BBBBBBAABABAABAAABBAABABAAABAAAAABBAAAABABABABAB", "B BBABBBBABBAAAAABBBBAABBBAAAAABBAABAAAAABABBBABBA", "B ABAAAAABABBABABBAAABAAAAABBAAABBAABBBABBABAABBAB", "A BABBBAAABAAAAABBBBBAAAABBBBABABAAAABBAAABABBABBB", "B BAABABABBAAABBBBABAABAABAABABABABAABABBAAAABBABA", "A ABBBBABBABBAAAABAAABBABBBBAABABABBBAAAABAABAABBB", "B ABBABAAABAABAABBAAAAABBABABAAAABABBBBABBBBBABBBA", "B BBBAABABABABAAAABAAABBAABBABAAAAAAAAAABBBAABAAAA", "A ABABAAABABBBABBABABAAAAABAABAABBBAAABBABBBAAABBA", "A ABAABBAAAAABBBAAAABBAAAAABBAAAAABBBBBBABBBAABAAA", "A BBABAABABBAABBBBBABBAAABAABAABABAAAABBAABBAABBAB", "B BAABBAAABABAABABBBAABAABBABBABBBAABBBBABBAAABBAA", "B BBBABBBABAABAAABBABBAAABBAAAABAABABBAAAAAAABAAAB", "A AAAABBABBABBBABAAAAAAAAAAABBABBABBAABBBABBABAAAA", "B AABABBBBBBABBBBBABBBAABBBABAAABBBBABBAABBBAABABA", "A ABBABABBBBAAABBBBAABABBBBBBAAAABBBABBBABBBAABBBA", "A ABBAABBAABBBBABAAABABBABBBABABBBBAABAAAAAABAABBA", "B ABAAAABBABBABBABBAABBABBBBBAABBABABBABABBAAAABBA" }

    Returns: 2

  117. {"BAA m", "BAB f", "BAA ABB", "BBA m", "BAA m" }

    Returns: -1

  118. {"A X", "A B", "B X", "B C", "D B", "D C" }

    Returns: 5

  119. {"A D", "A E", "B E", "B F", "C F", "C D", "AB AC", "AD AE", "AF AG", "AH IC", "AJ KC", "AL MC", "AN OC", "AP QC", "AR SC", "AT UC", "AV WC", "AX YC", "AZ AA", "ZB ZC", "ZD ZE", "ZF ZG", "ZH IZ", "ZJ KZ", "ZL MZ", "ZN OZ", "ZP QZ", "ZR SZ", "ZT UZ", "ZV WZ", "ZX YZ", "ZZ AZ", "YB UC", "YD UE", "YF UG", "YH IU", "YJ KU", "YL MU", "YN OU", "YP QU", "YR SU", "YT UU", "YV WU", "YX YU", "YZ AU", "A A", "B DE", "F GH", "I JK", "L MN" }

    Returns: 5

  120. {"A X", "A Y", "B Y", "B Z", "C Z", "C X" }

    Returns: 5

  121. {"B J", "B G", "J m", "C G", "C A", "A f" }

    Returns: 5

  122. {"BA TA", "BA TB", "BB TB", "BB TC", "BC TC", "BC TD", "BE TD", "BE TE", "BF TE", "BF TA" }

    Returns: 9

  123. {"XXA AXX", "XXA BXX", "XXB BXX", "XXB CXX", "XXC CXX", "XXC DXX", "XXD DXX", "XXD EXX", "XXE EXX", "XXE AXX" }

    Returns: 9

  124. {"D m", "B f", "C A", "C B", "B A", "B D" }

    Returns: 5

  125. {"A B", "A C", "D B", "D E", "E m", "C f" }

    Returns: 5

  126. {"X A", "X B", "Y B", "Y C", "Z C", "Z A" }

    Returns: 5

  127. {"Z A", "Z B", "Y B", "Y C", "X C", "X D", "V D", "V E", "W E", "W A" }

    Returns: 9

  128. {"A X", "A Y", "B X", "B Z", "C Y", "C Z" }

    Returns: 5

  129. {"D A", "D B", "E B", "E C", "F A", "F C", "D A" }

    Returns: 5

  130. {"CHILDA A", "A m", "CHILDA B", "CHILDB B", "CHILDB C", "C f" }

    Returns: 5

  131. {"C A", "C B", "E B", "E D", "A f", "D m" }

    Returns: 5

  132. {"F m", "F m", "F m", "F M", "M f", "F m", "Q P", "P QP", "PQ Q", "AAAAA AAAAAAAAA", "FFF FFPP", "FFF FFPPP", "FF FFPP", "FF FFPPP", "X Y", "X Z", "K N", "K M", "KK N", "KK Z", "XX Y", "XX M", "C PA", "C PC", "B PB", "B PC", "A PA", "A PB" }

    Returns: 27

  133. {"A X", "A Y", "B X", "B Z", "Y m", "Z f" }

    Returns: 5

  134. {"Q f", "B A", "B C", "D C", "D E", "F E", "F G", "H G", "E m", "H I", "J I", "J K", "L M", "N M", "N O", "P O", "P Q", "R Q", "L K", "R S" }

    Returns: 18

  135. {"D A", "D B", "E B", "E C", "F A", "F C" }

    Returns: 5

  136. {"C A", "C B", "E A", "E D", "B f", "D m" }

    Returns: 5

  137. {"A Z", "A Y", "B Y", "B X", "C X", "C Z" }

    Returns: 5

  138. {"CA PB", "CA PC", "CB PA", "CB PC", "CC PA", "CC PB", "G m", "G f" }

    Returns: 5

  139. {"A B", "A C", "D C", "E f", "B m", "D E" }

    Returns: 5

  140. {"F A", "F B", "G B", "G C", "H C", "H D", "I D", "I E", "A m", "E f" }

    Returns: 9

  141. {"A A" }

    Returns: 0

  142. {"A B", "A C", "B m", "D C", "D E", "E f" }

    Returns: 5

  143. {"A B", "A C", "A D" }

    Returns: 2

  144. {"BOB JOHN", "BOB MARIA", "ION MARIA", "ION KELLY", "JOHN m", "NAE KELLY", "NAE JHOANA", "TRUK JHOANA", "TRUK WW", "WW f" }

    Returns: 9

  145. {"A D", "A E", "B D", "B F", "C E", "C F" }

    Returns: 5

  146. {"C A", "C B", "D B", "A f", "G f", "F G", "F E", "D E" }

    Returns: 7

  147. {"X A", "X B", "Y B", "Y C", "Z A", "Z C" }

    Returns: 5

  148. {"ABB m", "AAA BAB", "ABA m", "AAA AAB", "AAA BAB", "BBB AAA", "BBB BBA", "BAB m", "BAB ABA", "BBB f", "BAA f", "AAB m", "AAA f", "BBB ABB", "ABB AAB", "AAB BAB", "BBA ABB", "BBA m", "BBB m", "BAB f", "BBA BBB", "BAB f", "ABA m", "ABA m", "BBA BBB", "BAA BAB", "BAA BAB", "BBA m", "ABA ABA", "ABA f", "BBA ABB", "ABB ABB", "BAA BBA", "BBB m", "AAA BBA", "AAB f", "ABB m", "AAB AAA", "BAA AAA", "AAA f", "BAA BAB", "AAB ABA", "AAA BBA", "ABA m", "ABA BAB", "AAB m", "BAB f", "BAB ABB", "ABA BAA", "AAA f" }

    Returns: 11

  149. {"A B", "A C", "D C", "D E", "B f", "E m" }

    Returns: 5

  150. {"B AAABABBAABAABBBBABBBAABBBBABABAABBBAAAABAAAABAAA", "B AAAAAAABABBBBAABBBAABAAABABBBBABBABABABBBBBBBBAA", "B AAABBAABBAABABBBAAAABBBBABBABBBBAABAAAABBBABABBB", "A BABAABBAAAAAAAABBBAAABBAAABBBBBABBABAAAABABBABBB", "B ABABBBAAABBBBABBABBAABBBBAAAAABAABAABAABABBABBAB", "A AABBAAAABBBAABAAAABAABABAAABBAABAAAAAABBAABBAAAB", "B BBAABBBBBBABAAABBABABBBBAAAABBAABAAAAABBAAAABAAB", "A BBBAAABAABAABBBBBBABAAABBBABBBABBAABAABBABBABABA", "B AAABBAABABBABBAAAABBBAABBBBABBAABBABBBABBABAABBB", "B BBBABBBAAABBAAAABBBABABAABABABBABAABBBABBBBBBABB", "A BAAAAAAABAABBABBABABABBBBAABBABAAABBBBBBABAABBAB", "B BABABBBBBABBBAABAAABBABBABABABBBAAABABBBABBAAABB", "B ABBABABAAAABBBAAAABABBBBBBABABABBBAAAABBBBBBBABA", "B BABBABBAABAABAAABABBAABAABABABAABBBBBAABAAABBBAA", "B AABBAABBBBBABABABBAABAAABBBBBBAAABAAAAAAAAABABBB", "B BABBABBBABAABBBBABBAABBBBABABABBAABABBAAAABBABAA", "B ABBBBABBABBABABBABBABAABBAABBAABBBBBAAABBBAABAAB", "B BBAAAABABBBBABBBBABBBABBBBBAAABBBAAABAAABBABBBAB", "B BBAAAABBBBAAAAAABABBAAABBABAAAAABAAABABBAABBABBA", "A AAAAAAAAABBAAABBAAAAABBABBAAAABABAABBAAAABAAAAAB", "B BBBAAAAABBBBBAAABBBAAABBAABAABABABAAABBAAAAAABBA", "A BABBBBABAAABABABBBAABBBBABAABBABABBBABABBABABBAA", "A BABBAABBAABBABBBBAABBBABAABBAABBAAAABBAAABABABAB", "B BBBBAABAABABAAABBBAABAABAABAAABBABBAAAAABAAABAAA", "A BBAAABABBABAABBBAABAABAABAAABBABAABBBAAABBABAABB", "B BBABAAAABBAAAAABBABBBBAABAAABBBBBAAABABAABABAAAA", "A AABBABBBBBBBBABABBABBBBBAAABBBABBBAABBBABAABABAA", "A BABBBBBBABAAAAABBAAAAAABABBBABBBAABBBAAAAAABABBA", "B BAAAABAAABBBBBBBBBABAAABAABBBABABBBABAABAABAAABB", "B BBAAAABBAAABBAAAABBABABABBBABBABBAABABABAABBBBBB", "A ABBBBAABAABAAAABABABABABBBABBBABABAAABABAAAABABB", "B AAAABBBABABABBBAABAAAAABAAABAAABBBBBBABBABABBBBA", "B BBBBBBAABABAABAAABBAABABAAABAAAAABBAAAABABABABAB", "B BBABBBBABBAAAAABBBBAABBBAAAAABBAABAAAAABABBBABBA", "B ABAAAAABABBABABBAAABAAAAABBAAABBAABBBABBABAABBAB", "A BABBBAAABAAAAABBBBBAAAABBBBABABAAAABBAAABABBABBB", "B BAABABABBAAABBBBABAABAABAABABABABAABABBAAAABBABA", "A ABBBBABBABBAAAABAAABBABBBBAABABABBBAAAABAABAABBB", "B ABBABAAABAABAABBAAAAABBABABAAAABABBBBABBBBBABBBA", "B BBBAABABABABAAAABAAABBAABBABAAAAAAAAAABBBAABAAAA", "A ABABAAABABBBABBABABAAAAABAABAABBBAAABBABBBAAABBA", "A ABAABBAAAAABBBAAAABBAAAAABBAAAAABBBBBBABBBAABAAA", "A BBABAABABBAABBBBBABBAAABAABAABABAAAABBAABBAABBAB", "B BAABBAAABABAABABBBAABAABBABBABBBAABBBBABBAAABBAA", "B BBBABBBABAABAAABBABBAAABBAAAABAABABBAAAAAAABAAAB", "A AAAABBABBABBBABAAAAAAAAAAABBABBABBAABBBABBABAAAA", "B AABABBBBBBABBBBBABBBAABBBABAAABBBBABBAABBBAABABA", "A ABBABABBBBAAABBBBAABABBBBBBAAAABBBABBBABBBAABBBA", "A ABBAABBAABBBBABAAABABBABBBABABBBBAABAAAAAABAABBA", "B ABAAAABBABBABBABBAABBABBBBBAABBABABBABABBAAAABBA" }

    Returns: 2

  151. {"BAA m", "BAB f", "BAA ABB", "BBA m", "BAA m" }

    Returns: -1

  152. {"A X", "A B", "B X", "B C", "D B", "D C" }

    Returns: 5


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: