경사로
시간 제한2초메모리 제한512 MB
모든 칸의 높이가 같거나 높이 차가 1인 단차를 길이 L의 경사로로 메울 수 있는 행과 열의 수를 센다.
문제
크기가 인 지도가 있다. 지도의 각 칸에는 그 칸의 높이가 적혀 있다.
이 지도에서 지나갈 수 있는 길이 몇 개인지 세려고 한다. 길은 한 행 전체 또는 한 열 전체를 뜻하고, 한쪽 끝에서 반대쪽 끝까지 지나가는 것이다. 따라서 길은 모두 개이다.
인 지도를 예로 살펴보자.

이 지도에 있는 길 개는 아래와 같다.

길에 속한 칸의 높이가 모두 같으면 그 길은 지나갈 수 있다. 높이가 다르면 경사로를 놓아서 지나갈 수 있는 길을 만들 수 있다. 경사로의 높이는 항상 1이고 길이는 이다. 경사로의 개수는 충분히 많아서 모자랄 일이 없다. 경사로는 낮은 칸과 높은 칸을 이어 주며, 다음 조건을 지켜야 한다.
- 경사로는 낮은 쪽에 놓고, 연속한 개의 칸에 경사로 바닥이 모두 닿아야 한다.
- 낮은 칸과 높은 칸의 높이 차이는 1이어야 한다.
- 경사로를 놓을 개의 칸은 연속해야 하고, 높이가 모두 같아야 한다.
다음과 같은 경우에는 경사로를 놓을 수 없다.
- 경사로가 이미 놓인 칸에 경사로를 또 놓는 경우
- 낮은 칸과 높은 칸의 높이 차이가 1이 아닌 경우
- 낮은 쪽 칸의 높이가 서로 다르거나, 개가 연속하지 않는 경우
- 경사로가 지도 밖으로 나가는 경우
일 때 경사로를 놓을 수 있는 경우를 그림으로 나타내면 아래와 같다.

경사로를 놓을 수 없는 경우는 아래와 같다.

위 그림에서 가장 왼쪽부터 차례로 1번, 2번, 3번, 4번이라고 하면, 1번은 높이 차이가 1이 아니라서, 2번은 경사로 바닥을 칸에 닿게 놓지 않아서, 3번은 경사로를 겹쳐 놓아서, 4번은 경사로를 기울여 놓아서 불가능하다.
맨 위에 나온 지도에서 일 때, 지나갈 수 있는 길은 파란색으로, 지나갈 수 없는 길은 빨간색으로 표시하면 아래와 같다.

지도가 주어졌을 때, 지나갈 수 있는 길의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 ()과 ()이 주어진다. 둘째 줄부터 개의 줄에 지도가 한 줄에 개씩 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다.
출력
첫째 줄에 지나갈 수 있는 길의 개수를 출력한다.