Problem Statement
In the English alphabet the letters {'A', 'E', 'I', 'O', 'U'} are called vowels while all others are called consonants. Note that in this problem 'Y' is always a consonant.
A string is balanced if the number of vowels in the string is the same as the number of consonants in the string.
For example, the string "BANANA" is balanced: it has three consonants ('B' and two 'N') and three vowels (three 'A'). The string "TOPCODER" is not balanced: it has five consonants but only three vowels.
Elly has a
The girl can alter her string as many times as she likes. In each operation she chooses one valid index i and either increments or decrements the letter S[i].
Incrementing a letter changes it to the next letter in the alphabet (e.g., 'A' to 'B', 'L' to 'M', and 'Y' to 'Z'). Decrementing a letter changes it to the previous letter in the alphabet (e.g., 'B' to 'A', 'M' to 'L', and 'Z' to 'Y'). The letter 'A' cannot be decremented and the letter 'Z' cannot be incremented.
Multiple operations may be applied to the same index. Thus, S can be transformed into any other string of the same length.
Elly wonders what is the minimal number of operations she has to do on S in order to make it balanced. Find and return that number.
Definition
- Class:
- EllysBalancedStrings
- Method:
- getMin
- Parameters:
- String
- Returns:
- int
- Method signature:
- int getMin(String S)
- (be sure your method is public)
Constraints
- S will contain between 2 and 100 characters, inclusive.
- S will contain an even number of characters.
- Each character in S will be an uppercase letter of the English alphabet ({'A'-'Z'}).
Examples
"TOPCODER"
Returns: 1
We can convert "TOPCODER" to "TOOCODER" in a single operation. After that transformation, it has 4 vowels (three 'O's and one 'E') and 4 consonants ('T', 'C', 'D', and 'R').
"BANANA"
Returns: 0
"BANANA" already has equal number of vowels and consonants.
"WITHOUTITIAMJUSTESPR"
Returns: 2
"NOZAPHODJUSTVERYVERYIMPROBABLE"
Returns: 5
"SYZYGY"
Returns: 8
In astronomy, a syzygy is a roughly straight-line configuration of three or more celestial bodies in a gravitational system. Please note that although the letter 'Y' is sometimes considered a vowel, in this task it is always a consonant. In this example, one optimal solution is to produce the balanced string "UUZYEY" in 2 + 4 + 0 + 0 + 2 + 0 = 8 operations.
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Returns: 8
"FROMALLTHETHINGSIVELOSTMYMINDIMISSTHEMOSTT"
Returns: 9
"ABRACADABRAABRACADABRA"
Returns: 1
"FAILEDSYSTEMTEST"
Returns: 3
"HEYTHEREWHOEVERISREADINGTHETESTS"
Returns: 4
"ONADARKDESERTHIGHWAYCOOLWINDINMYHAIR"
Returns: 5
"WELCOMETOTHEHOTELCALIFORNIASUCHALOVELYPLACESUCHALOVELYFACE"
Returns: 5
"HOWIWISHHOWIWISHYOUWEREHEREWEREJUSTTWOLOSTSOULSSWIMMINGINAFISHBOWLYEARAFTERYEARRUNNINGOVERTHESAMEOLD"
Returns: 11
"NOWILAYMEDOWNTOSLEEPIPRAYTHELORDMYSOULTOKEEPANDIFIDIEBEFOREIWAKEIPRAYTHELORDMYSOULTOTAKE"
Returns: 7
"HUSHLITTLEBABYDONTSAYAWORDANDNEVERMINDTHENOISEYOUHEARDITSJUSTABEASTUNDERYOURBEDINYOURCLOSETINYOURHEA"
Returns: 10
"ZZZZZZEBRA"
Returns: 9
"AEOUIA"
Returns: 3
"BCDFGHJKLMNPQRSTVWXYZZ"
Returns: 13
"ABCGHIMNOSTU"
Returns: 2
"ABCEFGIJKMNOQRSUVWYZ"
Returns: 5
"AA"
Returns: 1
"AZ"
Returns: 0
"XY"
Returns: 3
"IM"
Returns: 0
"OK"
Returns: 0
"AEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUIAEOUI"
Returns: 50
"BCDFGHJKLMNPQRSTVWXYZBCDFGHJKLMNPQRSTVWXYZBCDFGHJKLMNPQRSTVWXYZBCDFGHJKLMNPQRSTVWXYZBCDFGHJKLMNPQRST"
Returns: 56
"AZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZ"
Returns: 0
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"
Returns: 2
"AMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAMAM"
Returns: 0
"ANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANAN"
Returns: 0
"AMANAMANAMANAMANAMANAMANAMANAMANAMANAMANAMANAMANAMAMANAMANAMANAMANAMANAMANAMANAMANAMANAMANAMANAMANAM"
Returns: 0
"AOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAO"
Returns: 50
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: 50
"EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"
Returns: 50
"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII"
Returns: 50
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"
Returns: 50
"UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"
Returns: 50
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 50
"ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"
Returns: 250
"BQESLACSHECSYNWBBHQZOZVVRVZFXOKFVFYNUKOISPTBVVCNFSXYRMPRGMWCIGQEJVYFHBHQVORLHGZQTSLGCZQTNVTL"
Returns: 35
"NTFVJOEZPTVPLPBIZWXPARCJDMFELKQJJSXVLYQOCOCEAMHIDZFWGIKNIQIOUJMRUNQGFTBGTWGLLKYXXDEQUKAAFWWCROEZEM"
Returns: 26
"ACBBXIMGRGMPIDJHCESSQYSDIPWWWLHJVWHOGLBZJVFVDSTDERMAPQSYKDOPYGCUVDMOVSUGFTBQOFRXFEJIJCPJDBKX"
Returns: 31
"IGSVWCEPTTTUSVKOCTLMFVBDXUDUCHCEOPDYJNDNYONZWGDQXHMKXZWZSRWIELFMBYAJLQZXICTMUBCOTLCMPR"
Returns: 28
"FQNBORKJRDCQHSUCKMWPLELTBXAJLKMHFTFVDGNRKEOCJRNBZNGPUULQDGLITRJZRUQODSDBUMDCHDJVFSWFJEIPWLYHGBUAHATI"
Returns: 32
"EZCVMPNPATCBMPWWLQYJKCIJMNKEQVACJUNVIZUXFENZRFBKPAHOUPJLQBAQARPQSHOJYPCFWTFOMDYHWZTN"
Returns: 26
"JTYQQPDVFGYJUETAZIVJTVOFXVWJQDCMRADJZQGLZALFXWCOZPBCXDLXYKZOYZROVWZYJUCQNYYNPUMVDN"
Returns: 29
"VEZIIOTMCDIYREQAZHXAGDAATBUGWPPBVYBXTBDWSHEPTKGJLZWTRVGRNCTHMVAMLZFZEFUHFLEZFNPAVSCWYCIREKIH"
Returns: 26
"OFGIHONNSUVGWKTBMDZBJLEWYFZSHKASLVSWAKHJUKLTUWMRDNKGFLMRZIROAIASCAHSONDHGBISSMLHSKYZYCHLWR"
Returns: 30
"AFAJGEOVOLIENESLCWGKJPAPUDIMUAWUVYRUVPPWCDITYHHWHADJAEYDCXFGIPPCWOUEVNHTQEIPRUULXOOVYCMFVVHH"
Returns: 17
"NEMCQWOYFVIEBAITCZSDZRMTKWSQXZWMZWXYWTIJMASJGQIWDXWJQCGNNXNZTRTJYXFDJVVFFRZXOQRZMPKAKKSFIX"
Returns: 39
"WANUGXXEXYGWFPRPTEWUOXWLUPPKIQKBEKLUOYQGDUAWGYZCJJUUQYJEGKESWZNIYUZGPKSSKTDQYZTJDKDGHNBVDE"
Returns: 25
"ZTWDPKHTEMKHKOSGEWLTYAGRBLJJRPVBAOOQVHKXGFMFZOXQGAEHRLYNQPXLSPNMHWHCOBQWQYQSNCGJ"
Returns: 31
"XRNTVAYFKWIRJCPWIGEXFDULUVOQIFLJRCHHGMWVMOGRGVXMOFKCHHEPEOUVKQQHDTBLQHJDMBDKPAMQAKLUCVMPDXWWMPAI"
Returns: 29
"HXKKIKDTBLSGMDIDBEAALMFSNDUZXOJKTSMVXLJTWHCEXMQUABALNQNVZWTJHIDCWMGCIDGXJYNLZHCZERBUZZJSJMRE"
Returns: 30
"XPCCFKFFVXKXKFEXIQZVFXIBGQHESMARFZHUCPPNSXZZYKOSCYEMVDWCFECMRZLFFGRCQBLCEWJPLTFGXCICFZDWEQUWKNJZDG"
Returns: 42
"PKDLRYZLLMWZMECAUKAEWCBRUFHYGGBXKGSNVXBUCWIFNCITIXAUMCUCEZNPJJOUVCZZWMQPIDRXWYJUWSHJOLOWYUVB"
Returns: 26
"OQGZSRZFXHDSYLTCPXEVXFEMYNLUXBZVTETOXMBCBGNGPUMDNOVWUWXMSVZRZMAOUDYIJSWAAEITBEUR"
Returns: 21
"WENEVQLXYTINEIRWKZAMHRQQXZSNSIEYCVVVXQAIIZYARBPRIUBQSEJSVCUIFSBFFCWAIJFNQLIBWKJJVJKVBTUG"
Returns: 23
"MBKQCGTHBKJPXMKQNFDAOJUMAGXWUMUBJGCKEESBIPDENJJPBFQFFXUHGFCCNDWFIMOQERAWZMDFVSYWNQRWDU"
Returns: 27
"CRXUMXBVGFGDAVZFZJMNNBELOLDGBSKRGXLSYMEFXQZFNXCCVEGOTDBUNNMTFSMSHDDICRBKCYMFKJJP"
Returns: 31
"CUELCQDCVRXFDBDDUWMKNAXCYOFCNDEKQNUFHKYLBRMJMDHGJOSDMQLGUINAFVSMYRQKUAQBJISWCNKZHQBHLDIOHAMYKGHSCYIT"
Returns: 32
"DVARYGWYKJRRVIFSVQEVQURWJTVYSAXUXHKFAWGUELFTKIEBWHLKWFUXUWXYDSHXADAMYVXQWHMMJYHWLQKHULKZPVJA"
Returns: 30
"HPLSQMKPVLOKGVRIZCQZSTKPPFKCVBWSEFWONOGERNRNTDBMURYIXGGQMEZPDWPUQEAJTQXKNLQPGHYQ"
Returns: 30
"BCZRUAPYGERRANAHKSDEDJMWZSGSQWHVQOUVEZDJQDIVCDKTASQIBTAFUYXQOHSGOSLHPSGBAGIWTRRYXRISBP"
Returns: 24
"NGFRABOYOFVMVHAEBKHJLPWGWYLTOLBPGSMNEUIMCMNLOYZRAGEUVIAAAJBZMILOEBZDVGKJWJRSLACQOHAPDPFKKBXWPURAPFSP"
Returns: 25
"SLESTFXZJNLKPKVNQPFGTTDOVLJRKGLLAYBWLSUCAPAEPIAHEZPFZYLGWWIKOGGAQVVNUNJPMCCIXDLVWSARUKFHSOWM"
Returns: 28
"WXPDKBQIZCURJREZFOZNZCIAWZAURBDGKGZTKFHHEZPOSDRSIVFJZEBXABCBPAYBJFAVQAXQHTJTHGIXZEYUGDFG"
Returns: 25
"QZQBQULANNEVDPDPKXVPDFKPCEYGNKMTHDCPVIBDBXIZZQXUDOYYAXOPKKQDGTVVZZNZZBWMEAMZLZRFFRES"
Returns: 29
"OPXZYXFZSJCGOKHMMFTKXSCWCRYBFVFMZUTVIKAFVMOUODYCWWDSFAENWHPSVLHXLVRLUWDGRLGPVVXE"
Returns: 29
"NBQPUWLPMDIANVEUKEXRRPHMBFDPDEMGDWOTNZOKBNOODHOPEGYENTOQSOERRVVCWAQENKZRFVGBHNIWYVXKBSEXVPTS"
Returns: 25
"ECOZWYKDPNXSQDJOMJZDPQACPTCAMWFEQOYMKKXTZVWFDKATDQXGKYANSYBMHJZEVTQJLJDXOTHOYQTANLMWFOLIQKTMLLPDAL"
Returns: 33
"SLQPQFIPVEGKQTPQZGMDJNDJDDMGGIMPIEIIWOYRHEVRLZQNXPESUSWEOPPDISEUOJFKGOOBMUIIDKUTRTKIHLFVRPAEYDBHPN"
Returns: 23
"OSTSRUHBGEDJIIZEXPFNAYYCIQADQIVAILGUUDKULGZVIDTQRHUYWBEFDRFTZRIIJFAJMAKNNMYQQQBAPIVZVFBLEXEBDOFYYW"
Returns: 22
"DZYVTIFGKTXZCOZXBPOZQUFHJINFKVMNCDLQWNQQYINJAIIIDBOMQXOXOJIPMYKXQBVIMGXIJFKGCMYUZN"
Returns: 24
"GZRPPXQADBRCGTKQRSQHAYBSMXPRANKJIXZDDSBDSTMXTRSJRVEINUFTHZFVVKUCIQSUBRVZSSDLGPVTPQJREAFQNJYZLZNS"
Returns: 36
"BAXNNFXAZSUVTBHFMPHCQXSVQSLSOQUAQZTWPJVEZMXEQRZOBNNISDTLKSDXJRRXKJCPPGIOWRQDWRRNTLHWHEGD"
Returns: 31
"LKBCFZDXCJEKKTOWSXBCLPWKLGVRBBBFSETDPMDEZZGMTXFMIEIIIRVOXVALWQFYSSAUOAYNVDCQLRVOJXGJEEAXRATNDV"
Returns: 27
"DOWNCRPSCWEBTVOMYFEZCTFGCFROUHOZJUEUIGHXEGCHEEFJSQIJGMENXEKVHNHRXXRVSAUHITFGBGMWHOFKIIDLNEYRZP"
Returns: 23
"PTQXEERFCPRAAEBKREMELNOSURQFEQUEQGLQPIEHKBLGHXWLKMASXIUXEGHFFXLJFAPLRUEJPRKYHSLOEBFX"
Returns: 19
"CCKJARCRRKTNUFLZYWBMFXJRTEXWCLDMEWZGTDBANRZTLWXDWZWBOYHPVCQGZKUVUUZQDPVNZAIRTSHBNUSXJYGZLQGYDWDI"
Returns: 39
"YGPVKLEMYUHQCTEQQFAFQWLAULLJRZSFKICFLORRBRSQXERLEYMZWFIKBBDNJFPLUFXQTECPKRAMMLXOQNRSKDTHXZUXMJWXXS"
Returns: 40
"LTXNHMMRACWDQHEDYVZIVFVDTVBZKEFZMCYJMLJIBHHJGUDVYTQRTMMIIFITAMPQMWYJXSCAJPRXOUWBOBDUGWHTOEDUPLUKEU"
Returns: 28
"RLKXCUQCCGDMFZISOFEXUGBNIVFJTDKGNUGVUTHYPPXXNMOJPMFQXDRTFZJYWIFVLDXFJKBAKJLEUHTALFBEOARBGEWH"
Returns: 28
"EPNNUHTCFCOHJNHBFCENSVWMIREDOWAGUVHGIUCFKVWNGWFCAIXGKJRZSCGXAGXPVHPAFYWXFPYRHBLDMGEHLREDNDURIV"
Returns: 28
"COJDKKNZMTPJRUNDSWFZDBSWQLLJDGIVSFXOPLURPIZIRQGQZKUWKIZBLTFTXMPMSJCQKWHVBTVVXNJFMNWGIQLWPRIXIWJHWX"
Returns: 38
"TGIXLDDPENGRYLIPKIGKEENWVHJPPSUIPQCAEQNWNRNTDSUMDUONXFHOLLGEPKJDIOJBFIFRDRBSFZRZSUQRDMAIZX"
Returns: 24
"IIBBHYABIFAKGMBEBLHSLFPCGPEFJULCADMCVRIMZSWUMOKKFZLJRIYQMZEYDSKDCGAKMXBZBLXCJRQUZW"
Returns: 28
"EFEQBNVPPEDLSULAOZECXJSSLIQQVGIPCWFDTLSWXLCNIHWXNQNOEIYAPTMRSRZNBGKVJIJIQATMPOBJXEIHRVKSEMBT"
Returns: 25
"UZOUWSOGVQIVVLUDEQGBXJXLSOMWVJYDXCGFRSYIFSMHJHTFIUFLRNDYOAIDWDJRGRYABFBARWPZGQMCIYTDEHYPNYGAXCBORT"
Returns: 29
"NLUVQQKONJTEJZSUDKGYUZWACMCYOKJSHUWCQLESBFAHPBIGQTSHOWJGXJEPOKNILQYOIQJXPJLFSGPRSWCR"
Returns: 25
"XWERHUUSEPCESXFOWYRDRUNIUODGVFMOFUPWDVZTCGZTUYSCQIDSGXOOYWCNUNVWBUFNAUMAEFTTJXRL"
Returns: 18
"QRLIYCERWDNVYITVBUFGPPBUALIFUSQDYQVHNJCUSKOPIGKJTEJTTVJPLIQJMOFERJBYOCGHBAPHQXEDOPJGAEWNZURK"
Returns: 24
"BNGOGRFFVUWUUWQDVEOPTDXMCEISJABUMKISFPHEKBQOVGDWXAULECDMXMAYIRGNQMKOLZHZWZFASSGXRGYSTP"
Returns: 23
"GBCWHSZUMRZSFISHEYRHQNLBNWKANNJJJLJWWXLDWCJNWYAGXKQFWWKDULFKIKODOQGBAWDHECCKKJJUOHQKEWWXYGYJTFTQVM"
Returns: 38
"HJTLXWVJJOZKLBMPSYSBXPAZQHYUWJAKISCKHTCTNYOIXCDWNIGBHXNHLMHSQZUVRKIZNACWWTPRBQQLXJJNLJ"
Returns: 32
"RELAQHBYOBSVFFEERUSSSUGAXYQGAMMWSNCSUCLFBBLBNTTXDFDFXHULGXNGLKYIXRBAUHNLFVUYGTUOQAOTMB"
Returns: 24
"RRPCOPBLYVCJETARYUCSWKCJFRPJOAYGMPXTNUIIBSBOAHKIXGHMOCMQOIQDBWIBMGBSILEKNYFMALTOHDASSDJNFSLG"
Returns: 25
"YKQJUGTOPPIUZOJFPIREAIORMLTQFPEDZRHKJJRNMZKZMSSMIHNXINOINNQYPXBPIJHBEEEYZWHFLLGYORXBHDYHWVDOIJLVTCZG"
Returns: 28
"UWPAFORCDRSYYSVWLYVZTDMIFIUHWOQBWPMOEHHYVMHVYOMURRVEEZAXPRJBWMKHRFVUMDDVUOKDLIFGBCHOAGMGQP"
Returns: 25
"PWSJKUSUOXXHBVKKGOLBDADEBNCMNXALFYVIPMLATWDRZJJNVVDSWBOFROVZWURIMNMANKGLXFYRPEVF"
Returns: 25
"GG"
Returns: 2
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: 25
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB"
Returns: 49
"AAAAAA"
Returns: 3
"SYZYGYSYZYGYYY"
Returns: 20
"AAAZEEETIIIQOOOHAAAZEEETIIIQOOOHAAAZEEETIIIQOOOHAAAZEEETIIIQOOOHAAAZEEETIIIQOOOHAAAZEEETIIIQOOOHAA"
Returns: 25
"AEOGKRRRRR"
Returns: 4
"ZZ"
Returns: 5
"AAAB"
Returns: 1
"AAAA"
Returns: 2
"ACCC"
Returns: 2
"AE"
Returns: 1
"AAAAZZ"
Returns: 1
"MUTASATBCEBNVVSKCILIAHQIANNIUXFWPEPGYKYIICAFQNNHQEYWAOEZWJOXUDXNWVDXEEMVGKXCVDQJKLCTVOCTQHOKPFGWZGTH"
Returns: 25
"LRFKQYUQFJKXYQVNRTYSFRZRMZLYGFVEULQFPDBHLQDQRRCRWDNXEUOQQEKLAITGDPHCSPIJTHBSFYFVLADZPBFUDKKLRWQAOZMI"
Returns: 36
"AZZZ"
Returns: 5
"AAAAAAAA"
Returns: 4
"AAEE"
Returns: 2
"PPPP"
Returns: 2
"AIUEOAIUEO"
Returns: 5
"BBBBBB"
Returns: 3
"ZZZZAA"
Returns: 5
"EDEAEDECKAAEKAKC"
Returns: 1
"AARRRR"
Returns: 3
"AAAABB"
Returns: 1
"CCCA"
Returns: 2
"EEEE"
Returns: 2
"ZYWX"
Returns: 5