DHBB 2023 - CVP - 10 - Cconvert

Xem dạng PDF

Gửi bài giải

Điểm: 25,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Tấm đang có ~2~ xâu kí tự là ~S~ và ~T~ cùng với một bộ từ điển ~N~ xâu kí tự có cùng độ dài ~K~. Tấm muốn tìm cách sử dụng bộ từ điển này để biến đổi từ xâu ~S~ sang xâu ~T~ sao cho số lượng phép chuyển đổi là nhỏ nhất có thể.

Một xâu kí tự ~X~ có thể chuyển đổi sang xâu kí tự ~Y~ cùng độ dài nếu ~2~ xâu chỉ khác nhau đúng một vị trí duy nhất. Ví dụ ~X =~ abcd và ~Y =~ abdc không thể chuyển đổi cho nhau vì chúng khác nhau ở kí tự thứ ~3~ và ~4~. ~X =~ abcd và ~Y =~ abce có thể chuyển đổi cho nhau vì chúng chỉ khác nhau ở kí tự thứ ~4~.

Input

  • Dòng đầu tiên: chứa hai số nguyên ~N, K~ ~(1 \le K \le 20)~.

  • Dòng thứ hai: chứa xâu ~S~ độ dài ~K~.

  • Dòng thứ ba: chứa xâu ~T~ độ dài ~K~.

  • ~N~ dòng tiếp theo: chứa ~N~ xâu độ dài ~K~ trong từ điển.

Tất cả các xâu ký tự chỉ chứa các ký tự latin từ 'a' đến 'z'.

Output

Gồm ~2~ số nguyên ~x~ và ~y~, trong đó ~x~ là số lượng phép chuyển đổi ít nhất cần thực hiện, ~y~ là số cách biến đổi khác nhau với ~x~ phép chuyển đổi để chuyển đổi từ xâu ~S~ sang xâu ~T~. Vì số lượng cách chuyển đổi có thể rất lớn nên bạn chỉ cần in ra theo modulo ~10^9 + 7~. Nếu không có đáp án ghi ra hai số ~-1\ -1~.

Scoring

Subtask Điểm Ràng buộc
1 ~30\%~ ~N \le 10~
2 ~30\%~ ~N \le 200~
3 ~40\%~ ~N \le 2000~

Sample Input 1

2 3
abc
add
abd
adc

Sample Output 1

2 2

Notes

Phải thực hiện ít nhất ~2~ phép biến đổi để chuyển từ ~S =~ abc sang ~T =~ add và có ~2~ phép biến đổi sử dụng ~2~ phép biến đổi: abc ~\rightarrow~ abd ~\rightarrow~ add hoặc abc ~\rightarrow~ adc ~\rightarrow~ add.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.