4블록

일부 칸에 1x1 블록이 놓인 작은 N x M 판의 빈칸을 1x1과 2x2 블록으로 채워 점수를 최대로 만든다.

보통7동적 계획법비트 연산완전 탐색아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

4블록은 두 사람이 보드 위에서 함께 하는 협동 게임이다. 보드는 1×11 \times 1 크기의 정사각형 칸으로 이루어져 있다. 이 게임의 블록은 '1' 블록과 '4' 블록 두 종류다. '1' 블록의 크기는 1×11 \times 1이고, '4' 블록의 크기는 2×22 \times 2이다.

블록은 칸의 경계에 맞춰 놓아야 하며 두 블록이 겹치면 안 된다. 최종 점수는 각 칸에 쓰인 수의 합이다. 따라서 '1' 블록은 1점이고, '4' 블록은 네 칸에 모두 4가 쓰여 있으므로 16점이다.

효빈이는 보드 위에 '1' 블록을 미리 몇 개 놓아 두었다. 이제 영선이는 남은 자리에 '1' 블록과 '4' 블록을 놓아서 점수를 최대로 만들려고 한다.

왼쪽 그림은 효빈이가 블록을 놓은 상태이고, 오른쪽 그림은 점수가 최대가 되도록 블록을 놓은 방법이다. 이때 점수는 4×16+6×1=704 \times 16 + 6 \times 1 = 70점이다.

입력

첫째 줄에 보드의 세로 크기 NN과 가로 크기 MM이 주어진다. (1N101 \le N \le 10, 1M251 \le M \le 25)

둘째 줄부터 NN개의 줄에 걸쳐 효빈이가 블록을 놓은 보드가 주어진다. 각 줄은 길이가 MM인 문자열이다. '.'은 빈 칸이고, '1'은 '1' 블록이 놓인 칸이다.

출력

첫째 줄에 영선이가 얻을 수 있는 점수의 최댓값을 출력한다.