trang chủ / đề bài / dhbb23_cvp_10_c

Cconvert

Đề bài

Mô tả

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.

Một cách biến đổi là một dãy S=X0→X1→…→Xx=T, trong đó mỗi xâu trung gian X1,…,Xx−1 là một xâu trong từ điển và mỗi bước Xi−1→Xi là một phép chuyển đổi. Xâu T không cần có trong từ điển. Nếu S chuyển đổi được trực tiếp sang T thì chỉ cần 1 phép chuyển đổi. Hai cách biến đổi khác nhau nếu dãy xâu của chúng khác nhau.

Dữ liệu vào

  • Dòng đầu tiên: chứa hai số nguyên N,K (1≤N≤2000; 1≤K≤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'. S≠T, các xâu trong từ điển đôi một khác nhau và khác S, T.

Dữ liệu ra

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 109+7. Nếu không có đáp án ghi ra hai số −1 −1.

Ràng buộc

  • 1≤N≤2000
  • 1≤K≤20
  • 30% số test: N≤10.
  • 30% số test: N≤200.
  • 40% số test: N≤2000.

Ví dụ

Input Output Giải thích
2 3
abc
add
abd
adc
2 2 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 cách sử dụng 2 phép biến đổi: abc→abd→add hoặc abc→adc→add.
4 3
abc
abd
abe
aed
xbc
xbd
1 1 Ví dụ thêm. S=abc chỉ khác T=abd ở vị trí thứ 3 nên chuyển đổi trực tiếp, đây là cách duy nhất với 1 phép chuyển đổi.
3 4
abcd
abdc
abce
xbdc
zzzz
-1 -1 Ví dụ thêm. Từ S chỉ đi được tới abce, từ đó không đi tiếp được, nên không biến đổi được sang T.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0