Statistics

Problem Statement for "TheEncryptionDivOne"

Problem Statement

John is obsessed with security. He is writing a letter to his friend Brus and he wants nobody else to be able to read it. He uses a simple substitution cipher to encode his message. Each letter in the message is replaced with its corresponding letter in a substitution alphabet. A substitution alphabet is a permutation of all the letters in the original alphabet. In this problem, the alphabet will consist of only lowercase and uppercase letters ('a'-'z', 'A'-'Z').

John wants to be sure that his encryption is safe, so he will not choose a cipher where a letter is encoded to either itself or to its lowercase or uppercase equivalent. For example, he will not choose a cipher where the letter 'j' is encoded to either 'j' or 'J'.

Given the original message msg and encoded message encMsg, determine the number of simple substitution ciphers that fit John's requirements and encode msg to encMsg. Return this number modulo 1234567891.

Definition

Class:
TheEncryptionDivOne
Method:
count
Parameters:
String, String
Returns:
int
Method signature:
int count(String msg, String encMsg)
(be sure your method is public)

Constraints

  • msg will contain between 1 and 50 characters, inclusive.
  • msg and encMsg will contain the same number of characters.
  • msg and encMsg both will contain only lowercase and uppercase letters ('a' - 'z', 'A' - 'Z').

Examples

  1. "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX"

    "cdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

    Returns: 2

    Here we have to choose how to encode to letters 'Y' and 'Z' with two letters 'a' and 'b'. There are two ways to do it.

  2. "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX"

    "bcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY"

    Returns: 1

    And here John needs to encode 'Y', 'Z' with 'Z' and 'a'. He cannot map 'Z' to itself, so there is only one possible encoding.

  3. "topcoder"

    "TOPCODER"

    Returns: 0

  4. "thisisaveryhardproblem"

    "nobodywillsolveittoday"

    Returns: 0

  5. "a"

    "W"

    Returns: 710479617

  6. "x"

    "u"

    Returns: 710479617

  7. "oJHauGvJHuuUOmPKnnWYAUJFcGxGRgMuO"

    "WijjelWmKuaaymNKQHAQeajaaxumGhRmM"

    Returns: 0

  8. "SKWanddoiaUKWYAomnsfUiFfmoYNWffWfWggnU"

    "iNSWauuAQWLNSOkATaUDLQyDTAOCSDDSDSMMaL"

    Returns: 71471956

  9. "aMgqyMOaWSyaAxOyvOaRAEajOOAWWAqqAAj"

    "qKYEnKaqMgnqGWanlaqkGdquaaGMMGEEGGu"

    Returns: 650838813

  10. "vSCCAGuSjOpGchWOCSsmOVzKyKsuaCGWgGgga"

    "nYOOlwgYKymwRAIyOYFUyaGvWvFgCOwIiwiiC"

    Returns: 1191935296

  11. "ulOKgOKCGuG"

    "MUqoaqokJMJ"

    Returns: 753317706

  12. "aTxCeGnrKaCasGi"

    "dSYOaKpsmdOdWKx"

    Returns: 874075875

  13. "koJHauGvJHuuUvmPunnWmAUJFcG"

    "xGRgMuOWRguulWmKuaaymNlRHAO"

    Returns: 0

  14. "ajaaxumGhRmGPxSOCxyAuxahxgumheO"

    "ITIICOtGmAtGKCSlqCcVOCImCFOtmul"

    Returns: 0

  15. "CCiueCsHmjEuGxZqGmlqGiZCydieelGHnUsASOZyeHU"

    "GGTqOGAKCxwqYSkRYCbRYTkGsUTOObYKFjAaiEksOKj"

    Returns: 0

  16. "ySiwPGaNwNpumen"

    "OGCKbWugKgceJMy"

    Returns: 1213055109

  17. "LqqLuqkaIeISeqaemBgmQ"

    "SAASPAgeqcqmcAeciGXiO"

    Returns: 811989389

  18. "ciceOSSPVCa"

    "aQabossycuW"

    Returns: 0

  19. "RGZORnaamymQXXmOCROyuRXWEGWmRs"

    "iKYGiknneAeaqqeGwiGAmiqWtKWeiu"

    Returns: 0

  20. "uISbEeKueMGbKGAtgiMEINXmGofaKGp"

    "PNyKMmQPmWaKQagAiwWMNteuaCqkQaS"

    Returns: 304954993

  21. "SKWanKRoiOUKWKKimnsfUiFqmiUNFeeWqWNNmUiNSWauuKQWLU"

    "QOkATOUDCeyOkOOCSTpNyCMWSCyaMggkWkaaSyCaQkAvvORkEy"

    Returns: 0

  22. "CGAWWAJJzAuqKYEnKKUMgyqGWKYzoyAAdWuKKJCnLEEGLuQGSC"

    "ZAGuuGOOPGhWECUsEEVzKyWAuECPkyGGiuhEEOZsgUUAghRAIZ"

    Returns: 0

  23. "GFUxaGvWXFKCexUixiaMxMMOKgcKCGMGMUqoaqekeaKOaCxCeG"

    "nrKaCnsGirSYOaKpapCWaWWxSkoSYnWnWKHuCHOmOCSxCYaYOn"

    Returns: 1158074369

  24. "GxGRgMuOWijjglWiKuuuyiNKQHAQgujuuxuiGhRiMMnSOMiyAu"

    "babQgumJeOIIgYeOtmmmBOKtSlqSgmImmamObfQOuuChJuOBqm"

    Returns: 0

  25. "jEuGxZqGmjqGiuCyiieeCGInUNxyEuyeIUGGjqEGxxCxIGyynR"

    "UybfeTkfsUkfFbiKFFAAifGWtzeKybKAGtffUkyfeeieGfKKWu"

    Returns: 865371699

  26. "KSceJMyULqqLuOuaIeISecKemBgmQSueuPugeqcemzuesiGKMO"

    "WciIeOSUPVVPaQaboIocIiWIRGZRqcaIayaZIViIRBaIuNXWOQ"

    Returns: 0

  27. "SKWandRoiO"

    "UKWYAImnsf"

    Returns: 0

  28. "iFqmIVNke"

    "eWqWggCUi"

    Returns: 0

  29. "SWauuAQWLV"

    "QOkATOUDCe"

    Returns: 0

  30. "DAOOCSD"

    "pNVTMWa"

    Returns: 0

  31. "SKWa"

    "ndRo"

    Returns: 727749683

  32. "OUKW"

    "YAIm"

    Returns: 727749683

  33. "sfUi"

    "FqmI"

    Returns: 0

  34. "Nkee"

    "WqWW"

    Returns: 0

  35. "CUiN"

    "SWau"

    Returns: 425658860

  36. "AQWL"

    "VQOk"

    Returns: 0

  37. "TOUD"

    "CeyD"

    Returns: 0

  38. "OOCS"

    "DDNV"

    Returns: 4256936

  39. "MWaS"

    "yaMg"

    Returns: 1057818861

  40. "yVOa"

    "WSyi"

    Returns: 425658860

  41. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

    "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

    Returns: 710479617

  42. "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX"

    "bcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY"

    Returns: 1

  43. "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX"

    "bcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXa"

    Returns: 1

  44. "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWa"

    "bcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWab"

    Returns: 2

  45. "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVab"

    "bcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVabc"

    Returns: 9

  46. "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUabc"

    "bcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUabcd"

    Returns: 44

  47. "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTabcd"

    "bcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTabcde"

    Returns: 265

  48. "aCeEgH"

    "bDfFHg"

    Returns: 603210930

  49. "aa"

    "bb"

    Returns: 710479617

  50. "aa"

    "BB"

    Returns: 710479617

  51. "AhYy"

    "Snow"

    Returns: 631526996

  52. "abcdefghij"

    "FGHIJVWXYZ"

    Returns: 508110165

  53. "a"

    "b"

    Returns: 710479617


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: