Crosswords

시간 제한2초메모리 제한512 MB

요약
N개 세로 단어가 첫 번째 목록에, M개 가로 단어가 두 번째 목록에 속하는 N×M 글자 격자의 개수를 센다. N과 M은 4 이하다.
난이도

보통10점 중 7점

유형
백트래킹, 완전 탐색, 문자열, 해시맵
정답자
아직 제출이 없습니다

문제

In order to attract more tourists in Paris, Anne wants to organize a huge sound and light show at night on the facades of the Louvre palace. The facades are showing windows on several levels, and the windows are also vertically aligned. So Anne has the idea of displaying giant letters through the windows, one per window, so that it forms words both horizontally and vertically.

On a given facade, windows are organized on a rectangular grid with N rows and M columns. Anne has gathered a list of A of N-letter words and a list of size B of M-letter words. She is wondering how many ways there are to display simultaneously N words of length M horizontally and M words of length N vertically on that grid.

입력

The input consists of the following:

  • The first line contains two integers N and A separated with a single space.
  • The second line contains two integers M and B separated with a single space.
  • The next A lines contains N-letter words, one per line.
  • The next B lines contains M-letter words, one per line.

출력

The output should consist of a single line, whose content is an integer, the total number of distinct word grids.

제한

The input satisfies 2 ≤ N, M ≤ 4 and 1 ≤ A × B ≤ 1 008 016.

Words are taken from the English dictionary. Each of the two lists contains no repetition. Words consist of lowercase letters between ‘a’ (ASCII code 97) and ‘z’ (ASCII code 122).

Words from the first list will be displayed vertically, from top to bottom. Words from the second list will be displayed horizontally, from left to right. The same word can be used several times to build a grid, i.e., in several columns (resp., rows) if it belongs to the first (resp., second) list of words.

When N = M, it is not allowed to use words from the first list horizontally (unless they appear in the second list as well), or words from the second list vertically (unless they appear in the first list as well).

예제2

  1. 예제 1

    입력
    3 4
    4 5
    war
    are
    yes
    sat
    says
    area
    test
    ways
    rest
    
    예상 출력
    2
    
  2. 예제 2

    입력
    3 7
    3 7
    ran
    age
    now
    its
    the
    set
    ago
    ran
    age
    now
    its
    the
    set
    ago
    
    예상 출력
    2