만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

PIMM 파티

시간 제한1초메모리 제한1024 MB

요약
빈 칸에 내부인 X명을 배치해 모든 사람이 행복한 경우의 수를 10억 7을 나눈 나머지로 구합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 비트 연산, 완전 탐색
정답자
아직 제출이 없습니다

문제

PIMM 회장 민규는 여름방학을 맞아 파티를 열기로 했다. 회장 역할에 진심인 민규는 모두가 행복한 파티를 만들고자 한다.

수석 인간관계 연구원 종현에 따르면 PIMM 회원은 근성이처럼 인싸(I)와 윤수처럼 아싸(A)로 나눌 수 있다. 인싸는 다른 사람과 말하는 것을 좋아해서, 상하좌우로 인접한 칸 안에 1명 이상의 사람이 있으면 행복해한다. 아싸는 다른 사람의 쓸데없는 말을 계속 듣는 것을 싫어해서, 상하좌우로 인접한 칸 안에 인싸가 없으면 행복해한다.

민규는 N×MN \times M 직사각형 모양의 파티룸을 빌렸다. 정환에게서 인싸 XX명과 아싸 YY명이 파티에 참여한다는 연락을 받았다.

영도는 민규를 대신해 파티룸에 자리를 배정한다. 아싸가 먼저 배치된 파티룸 정보가 주어졌을 때, 모두가 행복한 파티가 되도록 자리를 배치하는 경우의 수를 구하라.

입력

첫 줄에 NN, MM, XX, YY가 공백으로 구분되어 한 줄에 주어진다. (1≤N,M≤7;1 \le N,M \le 7; 1≤X,Y≤N×M;1 \le X, Y \le N \times M; X+Y≤N×MX+Y \le N \times M)

다음 NN개의 줄에는 아싸가 배치된 파티룸 정보가 길이 MM의 문자열로 주어진다. *는 빈칸이고, A는 아싸가 있는 위치이다.

출력

파티룸에서 인싸를 배치할 XX개의 칸을 순서에 상관없이 선택할 때, 모두가 행복한 파티가 되는 경우의 수의 합을 1 000 000 0071\,000\,000\,007로 나눈 나머지를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    2 3 2 1
    ***
    **A
    
    예상 출력
    2
    
  2. 예제 2

    입력
    1 4 2 1
    *A**
    
    예상 출력
    0
    
  3. 예제 3

    입력
    3 4 3 2
    A***
    A***
    ****
    
    예상 출력
    12