Thuận có một bảng gồm \(r\) hàng và \(c\) cột, mỗi ô trên bảng có ghi một chữ cái in hoa. Để làm giảm kích thước của bảng, Thuận muốn xóa đi một số cột của bảng này hoặc giữ nguyên, nhưng phải bảo đảm rằng, sau khi xóa, nếu ghép các kí tự trên một hàng để tạo thành xâu kí tự, \(r\) xâu kí tự tạo bởi \(r\) hàng phải đôi một phân biệt.
Yêu cầu: Hãy cho biết Thuận có bao nhiêu cách xóa (hoặc giữ nguyên) các cột để thỏa mãn điều kiện này. Hai cách được gọi là khác nhau nếu tồn tại một cột trong cách này không bị xóa còn trong cách kia thì bị xóa.
Input
Vào từ thiết bị vào chuẩn có khuôn dạng:
- Dòng đầu tiên chứa hai số nguyên \(r (r \le 1000)\) và \(c\) là số hàng và số cột của bảng;
- Trong \(r\) dòng tiếp theo, mỗi dòng chứa \(c\) chữ cái in hoa mô tả bảng.
Output
Ghi ra thiết bị ra chuẩn một dòng chứa một số nguyên là số cách đếm được thỏa mãn điều kiện.
Scoring
- Subtask \(1\) (\(26\%\) số điểm): \(c \le 10\);
- Subtask \(2\) (\(32\%\) số điểm): \(c \le 15\);
- Subtask \(3\) (\(42\%\) số điểm): \(c \le 20\).
Example
Test 1
Input
3 3
ACD
BCE
BAD
Output
4
Note
Thuận cần phải giữ lại ít nhất 2 cột. Ví dụ, nếu xóa cột 2 (giữ lại các cột 1 và 3) khi đó, các xâu kí tự AD, BE, BD tạo bởi 3 hàng là đôi một phân biệt.
Bình luận