직각 삼각형의 개수 2

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

문제

$2$차원 좌표평면 위에 $0$개 이상의 점이 있다. 각 점의 $x$좌표는 $1$ 이상 $N$ 이하의 정수이고, $y$좌표는 $1$ 이상 $M$ 이하의 정수이다.

서로 다른 세 점을 골라 직각 삼각형을 만들 수 있는 경우의 수를 구해 보자. 세 점의 순서만 바뀐 것은 같은 경우로 센다.

입력

첫째 줄에 정수 $N$과 $M$이 공백으로 구분되어 주어진다. $(1 \leq N \leq \color{red}{5}$; $1 \leq M \leq 200\, 000)$

둘째 줄부터 $N$개의 줄에 걸쳐, $0$과 $1$로만 이루어진 길이 $M$의 문자열이 주어진다.

$i+1$번째 줄의 $j$번째 문자가 $1$이면 $(i, j)$에 점이 $1$개 존재한다는 뜻이고, $j$번째 문자가 $0$이면 $(i, j)$에 점이 존재하지 않는다는 뜻이다. $(1 \le i \le N$; $1 \le j \le M)$

점이 하나도 존재하지 않을 수도 있다.

출력

첫째 줄에 직각 삼각형을 만들 수 있는 경우의 수를 출력한다.