체스판

행이 최대 4개인 체스판에서 각 타일의 모퉁이 칸이 검은 칸에 놓이도록 겹치지 않게 L자 타일을 최대로 배치한다.

어려움8동적 계획법비트 연산아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

동혁이는 직사각형 체스판을 가지고 있다. 체스판의 행과 열은 0번부터 센다. iijj열 칸의 색은 i+ji+j가 짝수이면 검정, 홀수이면 흰색이다. 체스판의 일부 칸에는 말이 놓여 있다.

윤호는 L 모양 타일을 아주 많이 가지고 있다. 타일은 체스판의 한 칸과 크기가 같은 정사각형 3개를 아래 그림처럼 이어 붙인 모양이다.

OO
O

윤호는 다음 조건을 모두 지키면서 동혁이의 체스판 위에 타일을 올려놓으려고 한다.

  • 모든 타일은 90도, 180도, 270도로 회전시킬 수 있다.
  • 모든 타일은 체스판 위의 세 칸을 덮어야 한다.
  • 타일끼리 겹치면 안 된다.
  • 말이 놓인 칸은 타일이 덮을 수 없다.
  • 타일의 꼭짓점 칸, 즉 나머지 두 정사각형과 모두 맞닿아 있는 칸은 검정 칸을 덮어야 한다.

윤호가 놓을 수 있는 타일의 최대 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 체스판의 행의 크기 RR과 열의 크기 CC가 주어진다. (1R41 \le R \le 4, 1C471 \le C \le 47)

둘째 줄부터 RR개의 줄에 체스판의 상태가 주어진다. 각 줄은 길이가 CC인 문자열이고, 'X'는 말이 놓인 칸, '.'는 빈 칸이다.

출력

윤호가 놓을 수 있는 타일의 최대 개수를 출력한다.