Statistics

Problem Statement for "OrganicChemistry"

Problem Statement

In this problem we will consider some simple molecules from organic chemistry. Our molecules will consist of four elements: hydrogen (H), oxygen (O), nitrogen (N), and carbon (C).

In each molecule, some pairs of atoms are held together by bonds. The following simple rules apply in all our molecules:

  • Each bond connects exactly two distinct atoms.
  • There can be multiple bonds connecting the same pair of atoms.
  • Each H atom has exactly 1 bond.
  • Each O atom has exactly 2 bonds.
  • Each N atom has exactly 3 bonds.
  • Each C atom has exactly 4 bonds.

Some example drawings of molecules that follow these rules are shown below. (The symbols '-' and '|' represent bonds, '=' is used to represent two bonds between the same two atoms.)

          H       H H         H
          |       | |         |
H-O-H   H-C-H   H-C-C-O   H-C=C-H
          |       | | |     |
          H       H H H     H

With just a single bond, a hydrogen (H) atom can never hold a molecule together. Thus, if we have a molecule and we take away all hydrogen atoms, the rest of the molecule will still hold together.


You are given a description of a molecule from which somebody removed all the hydrogen atoms. Your task is to determine and return the number of hydrogen atoms that were present in the given molecule. (This number is always unique.)


The molecule part you are given consists of n atoms. Each of these is an oxygen, nitrogen, or carbon. The atoms are numbered from 0 to n-1. You are given a String atoms with n characters. Character i of atoms specifies the element of atom i.

There are m bonds between these atoms. You are given int[]s X and Y with m elements each. For each i between 0 and m-1, inclusive, there is a bond between atoms with numbers X[i] and Y[i].

Definition

Class:
OrganicChemistry
Method:
countHydrogens
Parameters:
String, int[], int[]
Returns:
int
Method signature:
int countHydrogens(String atoms, int[] X, int[] Y)
(be sure your method is public)

Notes

  • The numbers n and m are not given explicitly. In your program, you can determine n as the length of atoms and m as the length of X and Y.

Constraints

  • atoms will have between 1 and 50 characters, inclusive.
  • Each character of atoms will be 'O', 'N', or 'C'.
  • X will have between 0 and 200 elements, inclusive.
  • Y will have the same number of elements as X.
  • Each element of X and Y will be between 0 and (the length of atoms)-1, inclusive.
  • For each i, X[i] will not be equal to Y[i].
  • X and Y will describe a valid molecule without hydrogens: all atoms will be held together by the bonds, and each atom will have at most as many bonds as it should have in the complete molecule.

Examples

  1. "O"

    {}

    {}

    Returns: 2

    This is the molecule from the first example drawing (water): H-O-H After we removed both hydrogen atoms, what remained was a single oxygen atom with no bonds.

  2. "C"

    {}

    {}

    Returns: 4

    The second example drawing (methane). H | H-C-H | H

  3. "CCO"

    {0, 1}

    {1, 2}

    Returns: 6

    The third example drawing (ethanol). We have three atoms (C, C, O) and two bonds (0-1 and 1-2). After adding back all the hydrogens the molecule looks as follows: H H | | H-C-C-O | | | H H H

  4. "CC"

    {0, 0}

    {1, 1}

    Returns: 4

    The fourth example (ethene, also called ethylene): two carbons connected by two bonds. H | H-C=C-H | H

  5. "OO"

    {1, 1}

    {0, 0}

    Returns: 0

    A molecule of oxygen (O2): two oxygen atoms and two bonds between them. There are no hydrogens anywhere. O=O

  6. "OOO"

    {0, 1, 2}

    {1, 2, 0}

    Returns: 0

    A molecule of ozone (O3): three oxygen atoms with bonds that form a triangle. Again, there are no hydrogens anywhere. O-O |/ O

  7. "CCCCCC"

    {0, 1, 2, 3, 5, 4}

    {1, 2, 3, 4, 0, 5}

    Returns: 12

    Cyclohexane: six carbon atoms that form a simple cycle. C-C / \ C C \ / C-C

  8. "CCCCCC"

    {0, 0, 1, 2, 3, 5, 4, 4, 3}

    {1, 1, 2, 3, 4, 0, 5, 5, 2}

    Returns: 6

    Benzene: six carbon atoms forming a cycle, but now three pairs of carbons are each connected by two separate bonds. C=C / \ C C \\ // C-C

  9. "CCN"

    {0, 1}

    {2, 2}

    Returns: 7

    Dimethylamine: H H | | H-C-N-C-H | | | H H H

  10. "N"

    {}

    {}

    Returns: 3

  11. "OO"

    {1}

    {0}

    Returns: 2

  12. "CNONONNONNOCNO"

    {5, 5, 9, 12, 11, 2, 9, 13, 1, 7, 1, 8, 11, 3, 2, 6}

    {9, 8, 12, 13, 0, 5, 6, 4, 10, 11, 12, 4, 8, 6, 7, 1}

    Returns: 7

  13. "NCOCNCNCNCC"

    {2, 5, 0, 3, 6, 0, 8, 3, 8, 4, 9, 5, 1, 10, 3}

    {8, 10, 9, 0, 1, 1, 4, 9, 2, 9, 1, 4, 7, 7, 10}

    Returns: 8

  14. "CNONNCOCOOOO"

    {2, 6, 2, 0, 10, 1, 0, 7, 3, 10, 4}

    {11, 7, 3, 6, 7, 8, 8, 9, 4, 5, 7}

    Returns: 11

  15. "NOCCNCCCCOO"

    {5, 6, 4, 1, 8, 3, 7, 4, 5, 0}

    {0, 10, 8, 9, 2, 5, 8, 1, 4, 10}

    Returns: 16

  16. "NONNOONCNCOCCCCNNCOO"

    {18, 4, 11, 9, 15, 18, 7, 12, 9, 1, 3, 5, 17, 10, 14, 0, 7, 16, 11, 9}

    {15, 17, 1, 15, 5, 4, 17, 19, 8, 14, 17, 19, 0, 14, 6, 8, 10, 13, 16, 2}

    Returns: 21

  17. "ONCCNCOONNNCCCNCONCNNONCNCCNCN"

    {3, 12, 20, 14, 0, 12, 6, 20, 14, 10, 11, 1, 0, 7, 19, 28, 27, 21, 3, 26, 27, 13, 28, 9, 4, 28, 25, 22, 28}

    {2, 15, 12, 2, 27, 8, 24, 2, 24, 24, 9, 8, 7, 3, 16, 19, 18, 2, 19, 3, 29, 20, 23, 15, 12, 17, 17, 10, 5}

    Returns: 39

  18. "OOCONOCNOCONOCNNONCOCOCOOONCN"

    {21, 17, 22, 3, 27, 8, 19, 0, 1, 15, 27, 5, 0, 6, 9, 27, 25, 10, 26, 28, 23, 15, 3, 26, 20, 4, 20, 2}

    {9, 5, 8, 1, 14, 17, 18, 7, 24, 11, 12, 18, 13, 21, 22, 9, 24, 20, 23, 16, 13, 19, 4, 15, 13, 22, 16, 28}

    Returns: 26

  19. "CCOCOCOOCOCOOOCCCCNCCCNOCNNOCO"

    {14, 21, 5, 16, 29, 3, 13, 2, 24, 8, 25, 29, 26, 7, 23, 17, 19, 8, 7, 20, 24, 14, 1, 6, 22, 20, 22, 28, 17}

    {16, 11, 13, 4, 10, 24, 12, 4, 15, 2, 18, 14, 21, 1, 24, 10, 10, 0, 9, 18, 14, 27, 0, 16, 1, 1, 12, 10, 26}

    Returns: 36

  20. "CCCNNOCNCNCCOCC"

    {6, 11, 8, 3, 2, 1, 4, 12, 5, 7, 13, 7, 0, 8}

    {14, 14, 10, 8, 6, 12, 1, 9, 11, 9, 2, 5, 13, 4}

    Returns: 24

  21. "CNNOOONNNON"

    {8, 8, 7, 3, 7, 1, 10, 9, 5, 6, 2, 0, 5}

    {3, 1, 8, 6, 4, 10, 2, 2, 1, 7, 0, 6, 9}

    Returns: 4

  22. "NNNNCCOOCNONN"

    {3, 12, 5, 5, 6, 5, 8, 1, 8, 1, 9, 12, 5, 10, 2}

    {4, 6, 8, 7, 8, 0, 3, 4, 11, 0, 10, 3, 0, 2, 1}

    Returns: 9

  23. "ONNOONCNOCOCCNOOCOCCNNOCCOON"

    {11, 1, 11, 16, 14, 17, 15, 9, 2, 21, 5, 26, 17, 2, 1, 13, 10, 18, 6, 7, 23, 8, 16, 24, 20, 19, 18}

    {23, 27, 22, 11, 11, 24, 26, 4, 21, 3, 16, 2, 25, 1, 0, 0, 15, 14, 4, 3, 12, 21, 10, 13, 18, 9, 9}

    Returns: 28

  24. "NCNNCCOCCOOCNOCNNCCNCCNNNO"

    {1, 11, 6, 0, 24, 0, 23, 18, 6, 9, 15, 10, 19, 12, 0, 18, 5, 24, 25, 21, 21, 17, 11, 16, 13}

    {16, 22, 12, 14, 4, 18, 9, 2, 7, 20, 25, 18, 4, 23, 15, 22, 17, 16, 12, 19, 3, 24, 13, 8, 5}

    Returns: 34

  25. "CCONNCONNNCCNCOCCNCCNO"

    {7, 15, 11, 21, 17, 18, 2, 4, 15, 0, 20, 16, 20, 12, 5, 6, 3, 11, 8, 12, 3, 10, 0, 19, 5, 13, 16, 8, 14, 18, 5, 20, 15}

    {17, 14, 2, 16, 0, 13, 10, 15, 17, 13, 12, 11, 19, 1, 9, 8, 6, 5, 21, 4, 1, 1, 13, 4, 11, 3, 10, 7, 1, 19, 19, 7, 18}

    Returns: 6

  26. "NONNCNNNCONONCO"

    {0, 0, 14, 6, 14, 11, 13, 2, 1, 12, 12, 10, 13, 5, 4, 6, 4, 4}

    {10, 13, 3, 10, 9, 12, 9, 8, 7, 2, 7, 13, 1, 0, 7, 2, 3, 6}

    Returns: 8

  27. "OCNOOC"

    {3, 4, 0, 1, 4}

    {5, 1, 1, 2, 3}

    Returns: 7

  28. "OCCCCONOCNNNOCOOCOONN"

    {15, 17, 13, 14, 19, 7, 0, 11, 0, 4, 5, 6, 17, 6, 1, 9, 20, 18, 1, 16}

    {8, 3, 7, 9, 20, 6, 10, 12, 13, 12, 9, 11, 18, 2, 16, 4, 14, 11, 19, 8}

    Returns: 22

  29. "OCCNCCNNOCNNCCOONCCONNCCNC"

    {11, 11, 0, 18, 22, 17, 14, 16, 2, 12, 16, 12, 16, 18, 1, 10, 3, 25, 3, 20, 7, 19, 4, 8, 19}

    {21, 17, 23, 23, 11, 10, 23, 21, 20, 9, 9, 13, 7, 25, 21, 5, 7, 17, 6, 17, 24, 15, 6, 2, 18}

    Returns: 35

  30. "COONOCNONCCONONCCC"

    {0, 15, 1, 9, 4, 0, 2, 5, 0, 1, 5, 11, 12, 7, 16, 16, 12, 13, 3}

    {16, 8, 2, 15, 15, 17, 15, 3, 7, 6, 0, 9, 4, 17, 12, 13, 14, 10, 6}

    Returns: 17

  31. "OCNNCNCOOONNNOO"

    {2, 1, 12, 4, 0, 6, 6, 6, 10, 5, 6, 5, 4, 11}

    {14, 0, 13, 8, 9, 1, 14, 8, 13, 1, 7, 10, 3, 12}

    Returns: 14

  32. "ONOCNO"

    {5, 2, 3, 5, 3, 1, 4, 2}

    {0, 0, 1, 1, 4, 4, 3, 3}

    Returns: 0

  33. "CONNN"

    {3, 2, 0, 4}

    {2, 1, 1, 3}

    Returns: 7

  34. "CNOCOOCCCONNCCNNCN"

    {9, 10, 1, 0, 12, 2, 4, 15, 16, 6, 1, 10, 6, 13, 13, 16, 11, 12, 13}

    {8, 2, 16, 3, 17, 5, 13, 0, 0, 5, 9, 11, 16, 14, 3, 7, 12, 1, 6}

    Returns: 20

  35. "COONCCNNCCONNCNOCNCCOOOCNO"

    {9, 3, 8, 8, 6, 2, 13, 0, 21, 20, 24, 3, 8, 10, 11, 5, 16, 14, 15, 8, 7, 19, 1, 7, 4, 19}

    {11, 22, 3, 6, 11, 23, 9, 6, 12, 10, 21, 20, 17, 2, 14, 0, 17, 25, 14, 1, 4, 15, 24, 25, 18, 9}

    Returns: 28

  36. "NCCNOOOCNNONN"

    {11, 0, 7, 8, 0, 2, 8, 4, 3, 10, 12, 1, 0}

    {7, 2, 6, 5, 4, 8, 12, 6, 10, 2, 9, 12, 11}

    Returns: 12

  37. "NONNCOCNCCCCCNONCCNNNOC"

    {22, 12, 9, 4, 3, 13, 8, 21, 1, 5, 18, 17, 4, 11, 11, 11, 2, 1, 10, 3, 19, 20, 3, 8, 15}

    {8, 6, 20, 9, 21, 18, 14, 22, 5, 9, 11, 7, 17, 6, 7, 0, 10, 10, 18, 2, 2, 12, 13, 16, 10}

    Returns: 25

  38. "CNNONNOCOCOOONCOON"

    {7, 12, 1, 9, 11, 13, 12, 0, 10, 5, 6, 2, 17, 5, 5, 9, 0, 17, 17, 14}

    {9, 2, 16, 3, 4, 16, 10, 11, 13, 4, 15, 15, 13, 4, 0, 6, 8, 2, 0, 8}

    Returns: 10

  39. "NONCOCNONCOONCOCONCNONOCCOONNC"

    {9, 16, 12, 18, 21, 3, 18, 9, 22, 23, 4, 16, 23, 29, 20, 0, 28, 22, 13, 10, 0, 25, 11, 11, 28, 23, 5, 29, 25, 9, 26, 13}

    {12, 12, 21, 20, 8, 17, 9, 27, 21, 4, 28, 7, 3, 17, 3, 29, 5, 1, 7, 0, 8, 8, 13, 1, 6, 29, 2, 15, 14, 19, 14, 24}

    Returns: 24

  40. "OCONOONOCOOCNOCOOCONNNNNN"

    {19, 23, 21, 0, 22, 0, 2, 3, 24, 8, 5, 12, 13, 4, 8, 16, 7, 14, 4, 17, 18, 14, 24, 5, 1, 20}

    {16, 9, 7, 13, 9, 19, 14, 2, 6, 3, 24, 14, 15, 6, 19, 20, 22, 22, 3, 15, 11, 17, 11, 10, 20, 1}

    Returns: 17

  41. "CNNOCC"

    {1, 4, 4, 4, 5, 2, 2, 5, 0, 0}

    {5, 2, 0, 1, 1, 3, 4, 0, 5, 3}

    Returns: 0

  42. "ONNNONOOONOCNOOOCCNNNNNOO"

    {24, 19, 24, 12, 1, 9, 16, 12, 16, 3, 21, 15, 1, 22, 20, 11, 2, 22, 22, 18, 18, 23, 23, 18}

    {17, 7, 10, 2, 6, 0, 19, 15, 8, 0, 17, 5, 12, 17, 4, 19, 8, 20, 14, 6, 13, 11, 10, 9}

    Returns: 19

  43. "CCCCNCC"

    {2, 6, 0, 4, 4, 0, 1}

    {0, 3, 2, 5, 1, 3, 0}

    Returns: 13

  44. "NNOCOONCNCNONOONC"

    {5, 16, 11, 13, 8, 6, 10, 13, 0, 4, 3, 10, 14, 9, 8, 8}

    {6, 1, 15, 5, 15, 14, 11, 12, 10, 2, 2, 4, 1, 6, 7, 12}

    Returns: 17

  45. "NCNCOOOCONCCCOOO"

    {8, 2, 13, 0, 13, 4, 15, 7, 5, 9, 9, 9, 1, 3, 10}

    {1, 7, 15, 14, 14, 12, 12, 10, 6, 5, 7, 11, 4, 1, 12}

    Returns: 17

  46. "OCCCOCCNON"

    {5, 9, 0, 6, 3, 8, 4, 7, 5}

    {9, 2, 6, 8, 1, 4, 3, 5, 6}

    Returns: 14

  47. "OONNCOONONNNCCCON"

    {16, 6, 5, 9, 15, 1, 0, 7, 0, 11, 16, 10, 2, 3, 8, 9, 9}

    {2, 14, 15, 14, 14, 2, 12, 16, 5, 7, 13, 4, 8, 14, 4, 11, 4}

    Returns: 15

  48. "NCONCOCNNNNOOOCCOO"

    {12, 14, 10, 10, 2, 4, 11, 1, 7, 3, 8, 9, 3, 11, 5, 16, 6, 5}

    {6, 15, 0, 6, 3, 17, 13, 12, 10, 8, 4, 17, 13, 16, 2, 1, 14, 8}

    Returns: 16

  49. "OOOOCOCNNONOOCCCNNNOCCNNOCOON"

    {8, 24, 12, 27, 25, 23, 17, 24, 15, 12, 26, 9, 26, 0, 6, 25, 20, 19, 13, 6, 0, 21, 2, 22, 4, 14, 11, 10, 22, 5, 18, 3, 14, 10, 16, 7, 7, 17}

    {14, 23, 18, 6, 13, 13, 4, 9, 28, 27, 21, 25, 4, 21, 2, 23, 28, 1, 21, 25, 28, 18, 15, 10, 8, 4, 19, 6, 3, 13, 17, 20, 7, 5, 22, 11, 14, 8}

    Returns: 7

  50. "COOONCCCCCNOCCCCCCCCOOCCCCCNC"

    {2, 3, 14, 12, 3, 4, 5, 13, 28, 19, 23, 22, 8, 6, 15, 7, 9, 18, 9, 21, 9, 6, 7, 19, 26, 8, 15, 0}

    {28, 1, 16, 27, 28, 14, 28, 9, 8, 20, 16, 17, 23, 12, 20, 14, 10, 11, 14, 24, 11, 8, 21, 16, 5, 17, 25, 18}

    Returns: 45

  51. "CCONONONCCONCCONCOCONNCN"

    {13, 9, 22, 11, 0, 14, 19, 4, 16, 3, 12, 13, 8, 8, 21, 15, 6, 0, 9, 2, 12, 7, 16, 18, 5, 1, 4, 9, 23, 19, 15, 1, 7, 14, 7, 18, 3}

    {9, 20, 21, 20, 21, 2, 12, 1, 6, 20, 11, 11, 13, 22, 0, 0, 22, 1, 12, 13, 8, 17, 22, 5, 3, 8, 17, 23, 18, 16, 10, 16, 15, 23, 5, 10, 18}

    Returns: 0

  52. "NCOOOOOOONCNCCCNOOOOO"

    {8, 5, 8, 0, 19, 16, 18, 4, 20, 16, 5, 9, 11, 14, 15, 12, 18, 3, 10, 15}

    {7, 17, 0, 14, 6, 7, 20, 19, 4, 6, 0, 17, 1, 13, 2, 1, 2, 10, 14, 11}

    Returns: 16

  53. "NNOONCOOOCONNO"

    {13, 13, 7, 12, 1, 12, 2, 12, 1, 11, 1, 9, 11}

    {7, 3, 6, 4, 5, 3, 6, 9, 0, 8, 10, 10, 0}

    Returns: 11

  54. "NOOCOCNNNONNCOON"

    {1, 11, 0, 15, 8, 13, 6, 0, 15, 4, 6, 9, 7, 9, 2, 5, 2, 7, 3, 4, 10, 7}

    {14, 10, 8, 5, 15, 5, 8, 13, 11, 12, 10, 12, 12, 5, 3, 14, 0, 12, 6, 1, 11, 3}

    Returns: 1

  55. "OCNONNNONON"

    {9, 7, 6, 0, 4, 3, 4, 2, 8, 4}

    {5, 8, 7, 8, 5, 2, 3, 1, 10, 0}

    Returns: 10

  56. "NONCNNNCOO"

    {8, 0, 1, 3, 0, 5, 3, 4, 8}

    {9, 7, 6, 9, 6, 2, 1, 5, 4}

    Returns: 11

  57. "CNNOCCOO"

    {3, 6, 3, 7, 5, 4, 2, 1}

    {6, 5, 0, 5, 1, 5, 7, 2}

    Returns: 8

  58. "ONCOCC"

    {4, 5, 5, 4, 2, 2}

    {0, 3, 4, 1, 5, 5}

    Returns: 7

  59. "OCNNCNCOOCNCONNNOCCN"

    {4, 19, 2, 3, 16, 5, 19, 13, 2, 9, 2, 1, 9, 10, 12, 5, 16, 15, 7, 0, 4, 10}

    {3, 17, 3, 15, 6, 14, 4, 6, 7, 19, 18, 14, 6, 8, 5, 14, 11, 11, 1, 1, 10, 8}

    Returns: 18

  60. "ONOCNNOCNCCCOCNOON"

    {13, 5, 12, 15, 3, 2, 5, 8, 10, 4, 11, 1, 11, 10, 13, 17, 11, 14, 16, 5}

    {15, 0, 3, 16, 10, 6, 1, 2, 11, 6, 14, 17, 0, 14, 1, 7, 17, 8, 9, 4}

    Returns: 14

  61. "COONONONNNCNNOONOCCOC"

    {12, 17, 5, 2, 14, 10, 12, 15, 13, 19, 9, 10, 17, 20, 15, 8, 6, 18, 0, 4, 16, 8, 17}

    {16, 2, 15, 17, 18, 13, 14, 9, 8, 11, 20, 19, 3, 3, 7, 20, 11, 20, 10, 6, 3, 11, 1}

    Returns: 14

  62. "CCONCCNOOCNONOCOCCCOOONNONNCCONOOONOCCNOONC"

    {23, 22, 39, 22, 24, 12, 39, 19, 28, 2, 8, 13, 5, 13, 31, 16, 16, 23, 10, 24, 10, 29, 5, 29, 7, 18, 38, 25, 7, 8, 30, 42, 17, 4, 3, 37, 20, 42, 16, 4, 34, 27, 18, 15, 1, 30, 14, 17, 36}

    {14, 16, 26, 38, 25, 19, 26, 1, 6, 41, 5, 9, 25, 21, 38, 35, 33, 3, 41, 26, 0, 23, 10, 15, 40, 0, 6, 36, 0, 9, 33, 3, 42, 9, 0, 31, 41, 32, 22, 2, 32, 36, 34, 20, 35, 12, 12, 11, 27}

    Returns: 28

  63. "CNCCONNOCCCOOOOCOCCCOONCOONCNCOCONC"

    {21, 10, 22, 14, 27, 13, 17, 7, 26, 4, 6, 5, 2, 0, 21, 30, 6, 1, 19, 27, 25, 12, 27, 33, 33, 5, 16, 31, 15, 16, 19, 34, 2, 28, 32, 0, 22, 3, 0, 5, 3, 20, 34, 6, 20, 23, 31, 17}

    {8, 25, 18, 18, 15, 1, 23, 11, 1, 3, 14, 19, 18, 7, 10, 18, 24, 0, 17, 2, 2, 4, 31, 27, 29, 28, 3, 33, 26, 30, 8, 29, 12, 22, 28, 13, 9, 24, 10, 11, 9, 26, 19, 32, 10, 8, 34, 34}

    Returns: 11

  64. "OONNNOCOCNNNONONCNOONOCOCCONNNON"

    {19, 27, 30, 27, 26, 1, 21, 30, 0, 29, 28, 31, 0, 7, 5, 26, 16, 31, 29, 7, 9, 3, 28, 20, 18, 19, 4, 13, 15, 20, 9, 29, 18, 24, 10, 25, 17, 12, 6, 6, 8}

    {27, 14, 6, 2, 28, 2, 15, 17, 17, 2, 25, 13, 15, 23, 23, 1, 3, 22, 11, 11, 14, 31, 11, 13, 10, 9, 3, 22, 4, 21, 5, 12, 16, 20, 8, 6, 24, 8, 4, 8, 22}

    Returns: 8

  65. "NCNNCCNNOCONOOOCNNNCCOOCOCNNNCNNNON"

    {11, 29, 4, 13, 15, 21, 31, 27, 27, 34, 23, 9, 23, 3, 2, 24, 12, 6, 2, 28, 19, 10, 8, 8, 2, 15, 15, 31, 1, 1, 6, 5, 26, 29, 14, 14, 19, 3}

    {25, 0, 17, 24, 31, 32, 22, 18, 23, 11, 28, 4, 9, 20, 30, 3, 30, 27, 29, 7, 12, 25, 30, 34, 23, 16, 21, 16, 13, 29, 20, 0, 5, 33, 17, 32, 4, 28}

    Returns: 30

  66. "CCNOCOONCNCCNCNONCCNNCOCCCCOOOCNNOONONONONNON"

    {5, 15, 35, 14, 8, 13, 37, 32, 5, 17, 17, 2, 10, 13, 8, 22, 24, 3, 44, 1, 26, 18, 36, 19, 29, 3, 26, 9, 9, 40, 31, 32, 12, 24, 21, 13, 31, 38, 15, 11, 40, 41, 0, 17, 33, 32, 23, 23, 23, 11, 16, 1, 25, 42, 6, 39, 1, 31, 34}

    {2, 11, 7, 7, 30, 10, 30, 37, 14, 24, 20, 26, 29, 30, 20, 9, 42, 14, 8, 41, 8, 35, 2, 36, 28, 4, 25, 22, 28, 17, 24, 42, 13, 25, 38, 4, 30, 41, 39, 19, 34, 44, 21, 27, 10, 6, 27, 11, 12, 37, 21, 19, 39, 43, 20, 43, 26, 44, 18}

    Returns: 18

  67. "NNOCNCNCCCCCOCOCOCONOCNOCNCOCOCNNNCCCCC"

    {1, 5, 21, 19, 20, 29, 30, 35, 22, 12, 7, 17, 10, 18, 28, 20, 4, 28, 6, 15, 10, 37, 26, 1, 17, 6, 33, 17, 31, 32, 27, 2, 19, 7, 24, 36, 15, 25, 13, 25, 7, 30, 18, 14}

    {5, 23, 11, 34, 9, 2, 37, 34, 29, 16, 31, 9, 21, 35, 24, 10, 30, 3, 24, 8, 30, 1, 0, 12, 9, 27, 21, 28, 8, 19, 22, 0, 7, 21, 38, 0, 5, 26, 4, 13, 32, 36, 25, 3}

    Returns: 40

  68. "CCCCONCOCONNNONOONONCCNNOONNOOCNOCCONNCCCOCNCOOO"

    {20, 25, 3, 43, 6, 7, 28, 25, 3, 6, 38, 23, 24, 36, 16, 7, 38, 6, 29, 13, 36, 26, 47, 42, 15, 10, 36, 34, 0, 18, 0, 32, 8, 9, 26, 38, 43, 0, 37, 44, 8, 12, 9, 1, 46, 42, 17, 2, 20, 39, 27, 39, 1, 22, 5, 12, 6, 24, 41, 45, 20, 22, 2, 19, 19, 20}

    {40, 21, 37, 2, 46, 11, 45, 8, 28, 47, 35, 15, 42, 23, 21, 34, 16, 11, 22, 17, 40, 38, 23, 34, 17, 18, 29, 35, 40, 43, 37, 44, 11, 27, 30, 40, 0, 44, 26, 39, 5, 31, 1, 41, 8, 3, 33, 12, 13, 19, 14, 31, 32, 34, 3, 5, 31, 39, 42, 33, 4, 2, 10, 21, 10, 1}

    Returns: 11

  69. "ONONONOOCNOOCOOONOOCNNOCCCNNOONOONONNONNON"

    {41, 24, 13, 9, 22, 41, 26, 17, 23, 25, 3, 29, 6, 26, 8, 0, 37, 41, 17, 34, 40, 3, 10, 13, 10, 20, 33, 30, 4, 28, 37, 7, 32, 21, 8, 1, 12, 16, 32, 19, 39, 35, 34, 31, 38, 27}

    {11, 33, 25, 15, 29, 30, 20, 8, 27, 2, 26, 31, 11, 5, 40, 24, 18, 7, 18, 24, 0, 15, 5, 1, 6, 24, 21, 20, 9, 35, 12, 2, 21, 5, 3, 28, 1, 33, 12, 27, 22, 14, 36, 35, 30, 16}

    Returns: 20

  70. "OOOONOCCOOCCOOONCCNOCCCOCNCNOOCOCONOCCCN"

    {8, 32, 11, 3, 33, 28, 38, 8, 1, 30, 20, 30, 29, 16, 35, 37, 2, 31, 23, 5, 31, 5, 9, 34, 1, 6, 22, 22, 16, 11, 18, 6, 32, 24, 30, 10, 12, 13, 24, 26, 20, 6, 7, 13, 19, 7, 6, 37, 0, 18, 2, 15, 21}

    {28, 34, 12, 4, 37, 17, 29, 39, 25, 38, 4, 36, 30, 26, 20, 20, 24, 33, 4, 36, 17, 11, 3, 17, 38, 25, 18, 35, 26, 14, 39, 7, 14, 26, 22, 32, 38, 22, 23, 9, 15, 16, 19, 39, 37, 32, 34, 0, 17, 11, 27, 25, 10}

    Returns: 13

  71. "COONOOONCNOCONCCCNOCCOONNOCNONNOOCCCONNCOCOO"

    {31, 1, 34, 10, 40, 23, 28, 12, 15, 18, 1, 22, 18, 8, 30, 37, 29, 6, 13, 10, 7, 25, 26, 15, 19, 43, 25, 17, 36, 42, 7, 24, 38, 39, 42, 29, 11, 7, 4, 24, 15, 11, 9, 8, 14, 38, 14, 4, 11, 14, 19, 26}

    {27, 41, 0, 20, 37, 0, 37, 27, 13, 31, 20, 6, 35, 27, 26, 43, 35, 28, 23, 23, 17, 12, 20, 40, 32, 13, 15, 35, 3, 22, 0, 3, 36, 14, 5, 33, 21, 3, 29, 0, 32, 34, 34, 30, 24, 34, 20, 16, 30, 2, 39, 9}

    Returns: 24

  72. "NCNCNOOCNNNCNOOCNONCCNONNCNOCCOOOCCNNCOCCCNNNCONOC"

    {21, 14, 34, 44, 1, 24, 12, 21, 32, 20, 40, 13, 27, 33, 47, 3, 16, 12, 2, 46, 8, 37, 39, 5, 35, 30, 34, 38, 20, 25, 7, 41, 24, 26, 20, 15, 7, 16, 3, 48, 40, 33, 36, 2, 19, 25, 39, 6, 35, 45, 29, 11, 49, 7, 8}

    {16, 46, 23, 36, 49, 44, 28, 10, 13, 4, 24, 11, 23, 5, 18, 19, 21, 10, 47, 43, 26, 18, 20, 9, 44, 42, 18, 27, 43, 0, 30, 23, 37, 47, 31, 40, 15, 2, 32, 22, 22, 38, 39, 19, 36, 17, 3, 0, 34, 14, 35, 39, 3, 8, 6}

    Returns: 45

  73. "NNNCNNNNONCCCOCNONNOOOCCOCNONNOOOOCCCOCO"

    {19, 4, 3, 6, 29, 38, 3, 39, 34, 27, 2, 33, 0, 38, 18, 26, 37, 22, 13, 24, 29, 25, 4, 11, 1, 18, 33, 30, 35, 34, 23, 13, 25, 5, 15, 34, 16, 38, 11, 26, 32, 14, 36, 35, 12, 14, 14, 22, 17, 7, 29, 21, 14, 12}

    {11, 2, 7, 28, 20, 8, 37, 8, 19, 28, 17, 25, 2, 31, 4, 18, 23, 30, 6, 36, 9, 3, 3, 26, 11, 9, 9, 10, 27, 16, 6, 15, 31, 7, 17, 25, 35, 20, 15, 22, 1, 35, 28, 23, 1, 10, 24, 38, 36, 22, 32, 34, 23, 39}

    Returns: 10

  74. "COCONOOCCCOOOONOONCCCCCOOCONCCOOCNOCONNOCNNOC"

    {7, 10, 38, 30, 18, 42, 4, 2, 20, 25, 31, 41, 31, 26, 1, 8, 27, 15, 37, 4, 37, 12, 38, 27, 25, 39, 18, 42, 25, 9, 16, 17, 0, 22, 2, 2, 13, 14, 17, 19, 28, 29, 28, 21, 21, 3, 35, 32, 20, 14, 28, 20, 36, 24, 41, 40}

    {3, 6, 32, 8, 27, 5, 34, 42, 25, 16, 37, 9, 10, 13, 14, 15, 0, 9, 30, 33, 4, 32, 26, 22, 43, 36, 9, 34, 23, 18, 22, 18, 44, 11, 11, 40, 2, 1, 7, 44, 35, 6, 0, 43, 8, 39, 23, 19, 41, 8, 33, 28, 32, 20, 35, 12}

    Returns: 21

  75. "OCCNNNNNCOCONCCOOOCCOCONNOCNNCNCOOCNCOOCCNNNOCNNCO"

    {15, 1, 2, 11, 28, 47, 10, 35, 10, 20, 42, 31, 4, 13, 19, 16, 20, 27, 12, 25, 5, 2, 18, 9, 29, 2, 37, 7, 3, 5, 0, 3, 13, 41, 46, 1, 2, 43, 35, 7, 48, 12, 12, 3, 1, 23, 10, 35, 23, 18, 4, 31, 43, 47, 33, 8, 1, 38, 27, 21, 40, 38, 7}

    {28, 11, 39, 36, 22, 9, 24, 4, 44, 14, 44, 29, 49, 43, 27, 0, 32, 15, 25, 37, 18, 39, 16, 40, 34, 34, 33, 49, 8, 13, 23, 28, 24, 31, 31, 6, 8, 22, 32, 29, 18, 41, 26, 34, 13, 26, 5, 6, 36, 45, 41, 36, 14, 17, 19, 26, 47, 42, 30, 17, 6, 21, 26}

    Returns: 27

  76. "ONCNNCCCCCOOOOOONNNCNCOCNCOCOCNNNCCNOCC"

    {20, 22, 28, 0, 13, 22, 20, 8, 30, 13, 5, 21, 38, 37, 12, 14, 38, 29, 19, 7, 21, 3, 11, 23, 11, 37, 34, 16, 3, 25, 27, 36, 17, 5, 4, 35, 32, 33, 23, 18, 10, 19, 38, 6, 17, 4, 25, 14, 34, 9, 7, 7, 19}

    {25, 4, 12, 2, 24, 5, 5, 30, 18, 29, 35, 8, 10, 34, 33, 20, 31, 33, 8, 24, 8, 26, 25, 37, 15, 16, 35, 2, 26, 15, 32, 9, 6, 0, 32, 3, 24, 17, 9, 38, 33, 2, 7, 36, 28, 2, 18, 1, 31, 1, 29, 21, 29}

    Returns: 16

  77. "NCNCONCCOCOCONNNNOOOOCCOOCCOCNCCONNNOCCOOC"

    {14, 39, 21, 23, 22, 40, 21, 35, 5, 9, 28, 14, 24, 18, 22, 28, 13, 2, 11, 9, 10, 34, 25, 38, 3, 6, 17, 3, 4, 7, 0, 30, 20, 35, 37, 31, 13, 0, 1, 19, 26, 22, 33, 9, 30, 6, 7, 8}

    {27, 1, 23, 38, 12, 24, 28, 0, 25, 36, 32, 2, 36, 14, 27, 2, 18, 35, 25, 20, 1, 40, 15, 16, 4, 13, 25, 19, 39, 17, 34, 9, 32, 34, 28, 3, 30, 21, 21, 1, 41, 41, 10, 31, 29, 30, 16, 31}

    Returns: 31

  78. "COOOCOCONNNCNOCNNNNCNONCNCCONNNNNNOONCCON"

    {4, 20, 27, 36, 22, 15, 34, 3, 37, 38, 15, 17, 26, 36, 25, 18, 11, 20, 29, 11, 8, 35, 14, 23, 31, 27, 31, 11, 34, 20, 6, 29, 21, 29, 37, 0, 25, 13, 28, 24, 12, 30, 12, 4, 30, 33, 39, 24, 13, 7, 23, 24, 32, 8, 40, 2, 26}

    {18, 30, 4, 12, 36, 16, 28, 15, 35, 25, 3, 1, 37, 37, 38, 28, 26, 17, 1, 9, 16, 7, 4, 5, 9, 16, 19, 26, 11, 18, 17, 5, 38, 19, 9, 14, 10, 31, 32, 25, 14, 8, 10, 23, 22, 22, 33, 19, 10, 33, 14, 21, 23, 38, 2, 0, 6}

    Returns: 9

  79. "NONOONNNCOOCNONNNCNCCNNOCONOCOCNONCOO"

    {0, 13, 2, 5, 25, 13, 17, 8, 23, 33, 7, 16, 17, 16, 26, 9, 18, 5, 25, 36, 22, 34, 16, 15, 22, 5, 9, 7, 15, 32, 34, 21, 21, 14, 0, 11, 8, 30, 2, 19, 27, 11}

    {17, 20, 24, 18, 33, 28, 8, 11, 30, 29, 8, 14, 29, 12, 36, 34, 20, 2, 17, 30, 0, 35, 18, 19, 33, 4, 10, 10, 20, 7, 1, 4, 20, 6, 23, 19, 31, 19, 28, 30, 1, 3}

    Returns: 23

  80. "OCCOCONONNONCNNNONNNNOCCCCONCCCOONCONNN"

    {11, 36, 38, 6, 25, 37, 6, 36, 5, 13, 11, 17, 35, 37, 20, 7, 2, 4, 18, 9, 15, 27, 17, 2, 18, 30, 15, 11, 9, 17, 6, 27, 34, 23, 31, 34, 13, 24, 1, 2, 14, 15, 4, 8, 1, 29, 28, 1}

    {18, 23, 33, 21, 4, 5, 10, 30, 37, 8, 36, 3, 4, 3, 26, 29, 7, 30, 26, 12, 2, 16, 31, 16, 13, 20, 20, 9, 0, 35, 34, 23, 19, 25, 28, 23, 10, 0, 14, 34, 21, 19, 24, 33, 38, 32, 22, 22}

    Returns: 22

  81. "CCCOCONCCNONNCCNCNNONNONNNCNCCCCNNNOCOOCCNCCNONCCC"

    {23, 16, 22, 1, 25, 43, 1, 24, 15, 30, 20, 24, 15, 28, 20, 7, 22, 42, 12, 20, 21, 5, 18, 15, 16, 35, 45, 26, 29, 7, 48, 27, 47, 28, 1, 39, 39, 13, 37, 33, 18, 37, 45, 0, 10, 8, 21, 19, 28, 34, 47, 29, 6, 16, 44, 14, 42, 29, 10, 26, 14, 9, 17}

    {38, 33, 2, 38, 32, 48, 18, 35, 48, 12, 42, 0, 14, 27, 33, 48, 30, 21, 7, 41, 36, 39, 42, 31, 2, 40, 12, 2, 49, 46, 6, 14, 0, 2, 4, 43, 40, 28, 1, 39, 17, 6, 36, 24, 36, 43, 8, 29, 49, 17, 27, 5, 19, 25, 47, 11, 3, 30, 41, 7, 43, 40, 30}

    Returns: 37

  82. "C"

    { }

    { }

    Returns: 4

  83. "ONO"

    {0, 1 }

    {1, 2 }

    Returns: 3

  84. "CCCCCC"

    {0, 1, 2, 3, 5, 4 }

    {1, 2, 3, 4, 0, 5 }

    Returns: 12

  85. "CCO"

    {0, 1, 1 }

    {1, 2, 2 }

    Returns: 4


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: