Problem Statement
For example, consider the string "ABCA". We can choose to replace each 'A' by a 'F', each 'B' by a 'B', and each 'C' by a 'G', obtaining the string "FBGF". Thus the strings "ABCA" and "FBGF" are convertible. The strings "ABCA" and "EFGH" are not convertible, because the two 'A's in the first string must correspond to the same letter in the second string. The strings "ABCA" and "EEEE" are not convertible, because different letters in the first string must correspond to different letters in the second string.
You are given two
You want to change A and B into two strings that are convertible. The only allowed change is to choose some indices (possibly none) and to remove the characters at those indices from each of the strings. (I.e., the removed characters must be at the same positions in both strings. For example, it is not allowed to only remove character 0 of A and character 3 of B.) For example, if A="ABAC", B="AHHA" and the chosen indices are 0 and 2, then the resulting strings will be "BC" and "HA". Our goal is to choose as few indices as possible, given that after the erasing we want to obtain two convertible strings. Compute and return the smallest possible number of chosen indices.
Definition
- Class:
- ConvertibleStrings
- Method:
- leastRemovals
- Parameters:
- String, String
- Returns:
- int
- Method signature:
- int leastRemovals(String A, String B)
- (be sure your method is public)
Constraints
- A will contain between 1 and 50 characters, inclusive.
- A and B will be of the same length.
- A will contain characters from 'A' to 'I' only.
- B will contain characters from 'A' to 'I' only.
Examples
"DD"
"FF"
Returns: 0
The given strings are convertible without any removals. Any mapping with 'D' mapped to 'F' changes A to B.
"AAAA"
"ABCD"
Returns: 3
We can choose any three indices.
"AAIAIA"
"BCDBEE"
Returns: 3
One possible triple of indices is (1, 2, 5) (0-based indices).
"ABACDCECDCDAAABBFBEHBDFDDHHD"
"GBGCDCECDCHAAIBBFHEBBDFHHHHE"
Returns: 9
"H"
"H"
Returns: 0
"GE"
"DC"
Returns: 0
"AA"
"AA"
Returns: 0
"BBB"
"CAC"
Returns: 1
"FHA"
"III"
Returns: 2
"GBFAAHIG"
"ADEADEDG"
Returns: 4
"AAABBBAABB"
"BABABBBABA"
Returns: 5
"CBDCBACDBD"
"DBCCDBABAC"
Returns: 5
"AFHIHFBDIHEFIFDBEFIA"
"FGFEFAFDCCACDBIFHEIF"
Returns: 13
"HBEFCIADAHIAEGGCGHDCE"
"ICECEFBGIFACBIEIIHAFG"
Returns: 12
"FEDEIGCGHFFAHIEBIHFEED"
"DCFAGGBCBAFABAIGGIAFBD"
Returns: 13
"ICEBAAHDAHBICCDDCEHIGGB"
"EIDFGAGHBDEIAFFGIGDIHAF"
Returns: 12
"HCAIDAEHBHDCBIAIHDEHHGBF"
"EEEAEECDBFDGHGFEFFIGFEAH"
Returns: 13
"FHDHIFFAECCAHICCDFFBFHEHB"
"GGGHAGEIDHICFCFHEIDCDBBBH"
Returns: 14
"GAFCBDHACBGCFAICCICGHEDEHE"
"IABCIAHIBIEAAFCDFDAHAACHGF"
Returns: 15
"ECIDGIEBFBFFFGGBAAHBFIACAFH"
"BIGHAEBHCHAGIFHHIFBEEBHFCDC"
Returns: 16
"HIGHFCIDAAIGGABADFDBABHAIEAC"
"DAEFBBFDHFCBHHFFFBDDHDDBDBBF"
Returns: 18
"IGIIHFCGCABFGEFCHDIDCHCDCEFEG"
"HFHBBDDIDDCFBCHBDDDHIABFIABBB"
Returns: 19
"GEBADHGBBHCDDEFGAIBGBIHHFHGADC"
"CGIHGBHEEDHFEFFHCAFAGGCIECAIBE"
Returns: 19
"BGGHFFDEBIEFHDDFAFHFFAAFFHEFCDG"
"EBFDCGCIDHAIFAGGHEDFCEGFEGIFDGC"
Returns: 19
"GABFBFCIEIDEDEIBGGBCBCCDFIEHIHGC"
"BIBDFIAFEGCDDCEHAACBCAIGDIEBAHFI"
Returns: 19
"IDCHCFHGGDBHFBEDCBCECAHBIHGHAEGCI"
"FCCIIHBIECFFFGDAHAABCEECDCICEADAI"
Returns: 20
"BFDBEFCFFHBHHBFDCHGFBAIIFBDFEAAEAD"
"CFHAAHAEFIGFCFBHGAIDAAAEGEGFCGDAFE"
Returns: 22
"CADEFIECDHEDCDIDGFCAEFFBGIHIIHGIBIH"
"DGBIHADCBDAHEBFGHFAHAIDCDACFAAADBEI"
Returns: 22
"EACDBBCBFEDFAACBGDIEHFIGAGCGEDFCFCDB"
"FDGIHEEFABIAEIAGAFICEADFECGCFIABIECH"
Returns: 18
"GFBHEIFEFBECGCDHBFIHHADCAHABHIBFHEDGC"
"CHDIAGFGADDCHCCGIHEAGFGHEEDBHAIEECEHI"
Returns: 25
"AHEFGCBGCEBBGFEGACCDBBIAGBIBGAGICBFGHI"
"GFCIIADCIGFICEBDFDGHEHIIHBFIAIFFHHFEGF"
Returns: 25
"CDBACCFAHIGEEIFCAIEEHFCACBBCCBAEBIGBIGI"
"GBAFIDFHFHGAEIGHGCIFDFBFDEGBADBIBAAEIBB"
Returns: 27
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: 0
"BBBABAABBAABBBBAAAABAABBBBAAAAAABBBABBAAABBABBAABA"
"BBBBBAABABBBBAABBBBAABBAABBBAAABBBAAABABAAAABBBBAB"
Returns: 24
"BBBBBABAABABBAAAABBBBABAABBBBABAABAABABABAABBBBBBA"
"BBBBBAAAAAABBAABABBABABAABABABBBAABAAAAAABBABBBABA"
Returns: 17
"ABBAAABBBBCBABCCABBBBCBCCACBCACACCAAACBBCBCBCABBAC"
"CBCCCBABAAACCAACCACBAABBBBCABCCBBACBACCABABCBBCACC"
Returns: 25
"CABCBABCCCBBCCABABBACAAAABCBCAACCBABAABACBCBCBCABB"
"CCABACAACAAACABCCCCACBBACBAAABBBCBABBAAAAACCABCBAB"
Returns: 27
"CCBACBCBDADACBCBAADBCAACCACCAADBCCACBDBCBCAADBBDAC"
"CABACABDBDADDDCBBDDBCCCDBDDCDABCBDCDCAABDDBBBACDDD"
Returns: 33
"AECCEADBECCEEADDADEDBBAEBCDEEDBDECCEDDDBEECCEDADEB"
"EABCEBDADCEDCEAADCEABBDDBBDDACEAAAEAEBBEEABDBAABDA"
Returns: 33
"HDHIAEEFEEGGAFIHAFGIIDIAHDGIHCAFIIHHHEBBAFHHGHEAEI"
"EEIGDIABBHECAIIICIGBEBECGGACBCIHGCEEHHGEAAECEDDFAF"
Returns: 36
"EHEBBGEBGDCADHIBAHEBHEFIADEBHAACECGIGFIFHFGACCHIHB"
"CAGAECGBBAHGHHHGAABIDFHDHFAGDABCCIFHEGHIGACFBHFABH"
Returns: 35
"IDEGADDIIBGDAFEIBBBGAHDHEBFBICCAHBCBHBIEGFCGFEDFHD"
"AIFACDDGEAEGGFDHCEIDCHACCIEHHCFDHEIAAAAAGHHAIBDHFF"
Returns: 35
"ABACDCECDCDAAABBFBEHBDFDDHHDGHFHEIDICIAIABCDE"
"GBICFFBGDCHAAIBBFHEBBDFHHHHEADFGHICBBCCDAAABB"
Returns: 27
"ABACDGHACBD"
"BCADCBDGABD"
Returns: 6
"GIEIHIGHIAGDGGIFIIACHGDEFBCACEBEFHAHAIIEFFEAAHHFEC"
"DAGIEGGCCGIHFGBHBHFGDGHFGGGCAHHIIAEIFIBCBEEADEAHED"
Returns: 34
"AAAAABBBBBCCC"
"BBEEEBBEEBBEE"
Returns: 7
"ACHHCEBCICBCGDHCDCDGAAIIIGECFIEFEEEGGHCCACEHGFEICA"
"FEFEIAFFHCADGEIIEBFHFFDIAHEHHDBGFIEHBBFEBECDGFDEEB"
Returns: 34
"AAAAAAAAAABBBBBBBBBB"
"IABCDEFGHIIABCDEFGHI"
Returns: 17
"ABCDE"
"AAAAA"
Returns: 4
"ABABABBBB"
"AAAAAAAAA"
Returns: 3
"AAAA"
"BCAA"
Returns: 2
"ABCA"
"EEEE"
Returns: 2
"ABCCDEFGCDEFGHIDDEFGCABCCFGHIDEFDEFGCF"
"BDFCAADFCGCDEFAAAABEFGCEFGCAHIIIIBBCCA"
Returns: 23
"AAABBBB"
"ABBBBBB"
Returns: 2
"ABACACA"
"BBCBDBD"
Returns: 3
"AAABBB"
"CCCCCC"
Returns: 3
"ACC"
"BBB"
Returns: 1
"ABDEFHIABEFIHFEADFEGHABDEFHIABEFIHFEADFEGHABDEFHI"
"BAEDFGHIIHGHIABCDBAEDFGHIIHGHIABCDBAEDFGHIIHGHIAB"
Returns: 34
"BBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
Returns: 3
"ABBBB"
"EEEEE"
Returns: 1
"BI"
"AA"
Returns: 1
"AAAAADDDDD"
"CCBBBEFFFF"
Returns: 3
"AB"
"CC"
Returns: 1
"AAAAAAABBBB"
"AAAABBBAAAB"
Returns: 5
"ABCABCABCABC"
"BAACBBCBBCBC"
Returns: 5
"AABB"
"AAAA"
Returns: 2
"ABCDEFGHIGHIDEFDEFGHABCDEFGIIDEFDEFGHABCDEFGIEFG"
"BCDEFGIEFGGHIDEFDEFGHABCBCDEFGHIGHIDHABCDEFGIEGI"
Returns: 34
"AAAAEEEA"
"CBBBBBBC"
Returns: 3
"DAC"
"HAA"
Returns: 1
"ABDGEIAEABCEDFGHIEEEEBBBBBCCCCCCCDDDDDBBBABCDEF"
"BCEHFFCIBDCAIADBCFGHICDEFGADEFGHIEFGHICDBABCDEF"
Returns: 33
"AACCCAC"
"IIIIIBG"
Returns: 3
"CCCBBBEEEEEF"
"AIIIIIDDDBBB"
Returns: 4
"ABCDEFGHI"
"ABCDEFGHI"
Returns: 0
"AAAAA"
"BCCCB"
Returns: 2
"AAIAIA"
"BCEEEE"
Returns: 3
"ABCCC"
"ABBBB"
Returns: 1
"ABBBB"
"BBBBA"
Returns: 2
"ABB"
"AAA"
Returns: 1
"AAB"
"CCC"
Returns: 1
"AABBCC"
"DEFGHI"
Returns: 3
"AAIIIAA"
"BBBBBEF"
Returns: 3
"AAA"
"BAA"
Returns: 1
"AAABBBBBBAII"
"CCCCCCCCCDII"
Returns: 3
"ABCABABCDAB"
"EEDEEEEDFBG"
Returns: 4
"ABAA"
"EEEE"
Returns: 1
"A"
"B"
Returns: 0
"AAAAEEEA"
"BCBBBBBC"
Returns: 3
"ABCD"
"AAAA"
Returns: 3
"AABBC"
"AABBA"
Returns: 1
"ABBBBCDF"
"ADDEFDDA"
Returns: 5
"AAAAB"
"ABCAA"
Returns: 3
"AAAACCCCCC"
"BBBCBBBBBD"
Returns: 4
"ABCDEFGHI"
"IHGFEDCBA"
Returns: 0