Statistics

Problem Statement for "LatticeCrossword"

Problem Statement

A lattice crossword is a variant of a crossword where exactly 4 words are arranged in the form of a lattice (like a '#' sign). Given 4 words, a, b, c and d, return the number of different lattice crosswords that can be created according to the following rules:

  1. Each of the four given words must appear in the crossword exactly once.
  2. Two of the four words must be printed horizontally, from left to right.
  3. Two of the four words must be printed vertically, from top to bottom.
  4. Each horizontal word must cross both vertical words (each through exactly one common letter).
  5. Each vertical word must cross both horizontal words (each through exactly one letter).
  6. The horizontal words must be separated by at least one row.
  7. The vertical words must be separated by at least one column.

Two lattice crosswords are considered different if at least one of the words is at a different position. The position of a word is determined by the row and column position of its first letter. Row 0 is the row of the topmost letter in the crossword, and column 0 is the column of the leftmost letter in the crossword.

      c
      o
    p n
    r t
topcoder
    b s
  solution
    e
    m

Here the leftmost letter is "t" of the "topcoder" and the topmost letter is "c" of the "contest". So, the positions of the words are:
"topcoder" - (0, 4)
"contest" - (6, 0)
"problem" - (4, 2)
"solution" - (2, 6)

Another one lattice crossword, which can be constructed using this words is:

    t
    o
    p s
    c o
  problem
    d u
contest
    e i
      o
      n

Definition

Class:
LatticeCrossword
Method:
crossword
Parameters:
String, String, String, String
Returns:
int
Method signature:
int crossword(String a, String b, String c, String d)
(be sure your method is public)

Constraints

  • a, b, c and d will each contain between 3 and 15 characters, inclusive.
  • a, b, c and d will be distinct.
  • a, b, c and d will contain only lowercase letters ('a'-'z').

Examples

  1. "topcoder"

    "contest"

    "problem"

    "solution"

    Returns: 2

    Example from the problem statement.

  2. "coder"

    "number"

    "rober"

    "joker"

    Returns: 0

    No lattice crossword can be constructed.

  3. "lattice"

    "crossword"

    "disticnt"

    "approach"

    Returns: 4

  4. "zaxb"

    "axc"

    "cxd"

    "bxdy"

    Returns: 2

    Two lattice crosswords: z zaxb axc x x and x x cxd bxdy y

  5. "aaaaaaaaaaaaaaa"

    "aaaaaaaaaaaaba"

    "aaaaaaaaaaaaaab"

    "baaaaaaaaaaaaaa"

    Returns: 10082176

    A lot of crosswords.

  6. "aaaaaaaaaaaaaaa"

    "aaabaaaaaaaaaab"

    "aaaaaabaaaabaaa"

    "abaaaaabaaaaaaa"

    Returns: 6981150

  7. "aaaaaaaaaaaaaaa"

    "aaaaaaaaaaaaaa"

    "aaaaaaaaaaaaa"

    "aaaaaaaaaaaa"

    Returns: 7605840

  8. "aaaaaaabbbbbbbb"

    "aaaaaaaabbbbbbb"

    "bbbbbbbbaaaaaaa"

    "bbbbbbbaaaaaaaa"

    Returns: 1376112

  9. "kil"

    "kjnoi"

    "llm"

    "jlii"

    Returns: 0

  10. "oiomjo"

    "iijll"

    "hnimjj"

    "ioi"

    Returns: 2

  11. "ikoni"

    "mlio"

    "hkimh"

    "imihml"

    Returns: 2

  12. "jij"

    "lonl"

    "lkohmh"

    "kioih"

    Returns: 0

  13. "koom"

    "oni"

    "hihh"

    "mhh"

    Returns: 2

  14. "jnolh"

    "inkhhi"

    "mjnj"

    "hnj"

    Returns: 0

  15. "hjl"

    "moo"

    "mlmkl"

    "imhlik"

    Returns: 0

  16. "omo"

    "moi"

    "nkom"

    "ihjlh"

    Returns: 0

  17. "ojmkk"

    "ljmhn"

    "kmmno"

    "liooji"

    Returns: 0

  18. "khh"

    "lhkm"

    "iljjik"

    "ijm"

    Returns: 0

  19. "ihkn"

    "iojhn"

    "mkjih"

    "hiohjh"

    Returns: 2

  20. "jooiil"

    "jmom"

    "hhk"

    "jhjhl"

    Returns: 0

  21. "jjlhh"

    "ioo"

    "hon"

    "nmi"

    Returns: 0

  22. "oilkn"

    "momhj"

    "omkj"

    "oinn"

    Returns: 0

  23. "oojh"

    "mil"

    "nooij"

    "nni"

    Returns: 0

  24. "mill"

    "mjhnkl"

    "hjkjkn"

    "jjn"

    Returns: 0

  25. "oik"

    "immi"

    "homkk"

    "inlonk"

    Returns: 0

  26. "ohnhoi"

    "oomn"

    "jhnnj"

    "khmi"

    Returns: 0

  27. "jio"

    "jlllko"

    "nnkim"

    "mjkon"

    Returns: 0

  28. "lonnin"

    "nnkkl"

    "hjnhoi"

    "lmkn"

    Returns: 0

  29. "dbacdccdba"

    "abbcabbddb"

    "bcdcbbcaadacb"

    "ccabdbcbddc"

    Returns: 7298

  30. "bbabdcadbba"

    "bbbabaacbcbad"

    "adaddabacdbd"

    "abdddbadcbb"

    Returns: 14872

  31. "baaabaaccc"

    "aadbcdaabbbcc"

    "aaccaacaabdd"

    "babdadbbaabd"

    Returns: 15222

  32. "dbdabdbbcd"

    "bcbacaacdcbdd"

    "acbaccdbbcdd"

    "bddcbadaab"

    Returns: 7676

  33. "adbdbaccbd"

    "bcbbbadccb"

    "caccbdcbadabd"

    "cadcddbbab"

    Returns: 6608

  34. "bdbaaadccaca"

    "cccaaaabdd"

    "adcacbbcdb"

    "dccbdbacbd"

    Returns: 5064

  35. "dcbdbccbddc"

    "abbaccddbc"

    "ccbbbbaadb"

    "acdadacdcdca"

    Returns: 5102

  36. "ccadbdbbbbbc"

    "dbdddbcadc"

    "ddacadbbddbcc"

    "acccbdabbacb"

    Returns: 12202

  37. "dcaaaddcccdbb"

    "bcddcdadccbc"

    "ccddadaccadb"

    "abdcaacbdda"

    Returns: 17834

  38. "baababdccdcab"

    "bbaabbdccca"

    "aacddcbcab"

    "ccdacbdcbc"

    Returns: 7604

  39. "dbdccbadccdba"

    "dbcbdbbbbdad"

    "bcbabddaacb"

    "dbabcabbadaa"

    Returns: 13972

  40. "cbaaccbcbbdac"

    "dddddadaacd"

    "aadadcbcbabbb"

    "daacbabdadda"

    Returns: 10156

  41. "cdacbaddabba"

    "ccdbbcadcba"

    "abdadcdddc"

    "dcddbbcaccbca"

    Returns: 8860

  42. "adcbddaddccc"

    "cdddcabcccda"

    "bcddcdbbac"

    "cbdcccaadbdd"

    Returns: 14794

  43. "bbccaddcabd"

    "daccbaaaccd"

    "abdcbdccbdcbd"

    "dacdbcccbccd"

    Returns: 13130

  44. "cadbbdcccbaad"

    "ccacdadbaba"

    "aabdacaccdaac"

    "acbccbccdcdc"

    Returns: 19098

  45. "bbdadcccdcbcb"

    "ddccaaddcdaab"

    "cbcaabaccbcc"

    "baabdadcbaccb"

    Returns: 19148

  46. "accbbdbccdb"

    "cdacbcbdbbcc"

    "adccddddad"

    "daddabdcadd"

    Returns: 7068

  47. "dbdcdccacda"

    "ddbbccacbcacd"

    "bbdbcdaacbadb"

    "bdbbdcabdd"

    Returns: 10094

  48. "cdbdbdadbacca"

    "cdabbcbabbbad"

    "bdadcbaacacdd"

    "bcacdaabdcdab"

    Returns: 22428

  49. "ntwozeifzs"

    "qxfsexbvtr"

    "pelibvqucvsqd"

    "qeudfraprbq"

    Returns: 6

  50. "hrkhdyclljw"

    "vtfolykydunsl"

    "inmxlurmqdnd"

    "sjpjpxczejh"

    Returns: 2

  51. "howotgwqgc"

    "iwrvyzgmdtnyc"

    "qwmgsyecirlj"

    "tgddczpvqkvb"

    Returns: 10

  52. "hjxixtzhoh"

    "bmresimwxuvld"

    "gmzygajbdyxt"

    "tjnglyvsej"

    Returns: 2

  53. "efdbnwyklf"

    "tsxvtqxgkh"

    "qquurduvwjyfl"

    "ysronhrjen"

    Returns: 2

  54. "pfpsauhquqsc"

    "qmocqkorzn"

    "qfqmcnpgtf"

    "xesffvwixd"

    Returns: 0

  55. "ruddxeaxvfy"

    "qrjeaiftlc"

    "gefbhpyehn"

    "ekfyvsizuzoy"

    Returns: 0

  56. "uuedzbthrxty"

    "jdlzvbiclc"

    "zfgamtdjpvlas"

    "mygevfohhucb"

    Returns: 2

  57. "nymquxdwssvrj"

    "zktpwrujuonq"

    "owtbabkkainb"

    "srpomwqhtfo"

    Returns: 2

  58. "fqorornsclasr"

    "nfokpjpuguy"

    "cimplczagl"

    "cqnacdpyty"

    Returns: 8

  59. "hjjwylybsqnhe"

    "jlmxbdbjbzon"

    "dcdqhtlusov"

    "pfojccjbohgm"

    Returns: 20

  60. "qhymcehmntruo"

    "dzzlnspcyub"

    "kefgzcruzirrb"

    "zguutelrcpvg"

    Returns: 12

  61. "qlkgjudbilbg"

    "mezvdqklczg"

    "ixrwlulvlc"

    "bmffttwikmnws"

    Returns: 0

  62. "ebupbnghxuyi"

    "kvdnqsxcgkjy"

    "xybnqpbbum"

    "sbxyaqiydrvp"

    Returns: 18

  63. "thweifbispf"

    "tmyozkqccib"

    "sdlaztayxdwjn"

    "hgkbnqssrmkp"

    Returns: 2

  64. "agfjfricihoar"

    "aaqkpahlctk"

    "oqfbcgaqatkug"

    "iwvwohkihupg"

    Returns: 28

  65. "dtbehqymzunop"

    "bfqmywtxidqqx"

    "oliomlmschkw"

    "bskbzczgtmiaj"

    Returns: 4

  66. "kaudfxlmwlf"

    "cnmqjwlvdjkg"

    "sxscbxxpez"

    "bevzindkqrd"

    Returns: 4

  67. "zflkdgcysbc"

    "tvdpyegshigkt"

    "phnhixyqyjuff"

    "vvxvfccbfd"

    Returns: 8

  68. "gfnjfzunnigsc"

    "ubepjglqxtjwn"

    "blynybucyqcdl"

    "jiywrauxzafgx"

    Returns: 12

  69. "xxxxxxxxxxxxx"

    "yyyyyyyyyyyyy"

    "yxyxyxyxyxyxy"

    "xyxyxyxyxyxyx"

    Returns: 222640

  70. "aaaaaa"

    "bbbbbb"

    "ccc"

    "ddddddd"

    Returns: 0

  71. "aaacaaaaaacaaaa"

    "aaacaaaaaaaacaa"

    "aacaaaaaaacaaca"

    "acaacaaaacaaaaa"

    Returns: 4336114

  72. "bbaabaabbaaabba"

    "bbbbbbbababbaaa"

    "aabbaaabbbabbba"

    "bbabbaabbbabbbb"

    Returns: 1083428

  73. "baaabababaababb"

    "baabbbbabbbbbab"

    "bbabaaabaaaaaba"

    "bbabaabbbaaaaaa"

    Returns: 858336

  74. "aaaaabbbababbab"

    "baabbabbbabbbba"

    "bbabaaaaababbba"

    "abaaabbbabbabbb"

    Returns: 997616

  75. "babaabaabbbbaaa"

    "bababbbabaabbaa"

    "abbabababbaaaba"

    "bbbababbbaaabaa"

    Returns: 996664

  76. "aabaaaaaaaaaaaa"

    "baaaaaaaaaaaaaa"

    "aaaaaaaaaaaabaa"

    "aaaaaaaaaaaaaaa"

    Returns: 11115316

  77. "bbaabaabbaaabb"

    "abbbbbbb"

    "babbaaa"

    "aabbaaabbba"

    Returns: 35462

  78. "bbabb"

    "abbaabb"

    "abbbbabaaaba"

    "aba"

    Returns: 308

  79. "babbabaabbb"

    "abbbbbababbab"

    "aaba"

    "aaabaabbabaa"

    Returns: 13558

  80. "bbaaaa"

    "aaaaaaabbbab"

    "bbabbbaab"

    "abbb"

    Returns: 2816

  81. "bbbbabbbaba"

    "aaababbb"

    "aabaaabb"

    "abbabb"

    Returns: 10548

  82. "abc"

    "cba"

    "acb"

    "bca"

    Returns: 2

  83. "aaaaabbbbb"

    "bbbbbaacc"

    "aaadddccc"

    "eeedddaaacccc"

    Returns: 2060

  84. "abc"

    "aab"

    "ccc"

    "bcc"

    Returns: 2

  85. "aggbbaaabcaapao"

    "abbcrgcaabcau"

    "cbbwaaabbabee"

    "abbaaaeaabaaij"

    Returns: 26306


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: