Biến đổi xâu kí tự

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho \(n\) xâu kí tự \(s_1, s_2, \ldots, s_n\) và một xâu mẫu \(s\) có cùng độ dài \(d\) chỉ gồm các chữ cái thường tiếng Anh. Một phép biến đổi xâu \((i, j, k)\) thực hiện đổi chỗ kí tự thứ \(k\) của hai xâu \(s_i\) và \(s_j\) \((1 \leq i < j \leq n,\ 1 \leq k \leq d)\).

Yêu cầu: Tìm số lượng ít nhất các phép biến đổi xâu cần thực hiện trên \(n\) xâu \(s_1, s_2, \ldots, s_n\) để nhận được xâu mẫu \(s\).

Input

  • Dòng đầu chứa số nguyên \(n\) \((2 \leq n \leq 100)\);
  • Trong \(n\) dòng tiếp theo, dòng thứ \(i\) \((1 \leq i \leq n)\) chứa xâu \(s_i\) gồm \(d\) chữ cái thường tiếng Anh \((2 \leq d \leq 100)\);
  • Dòng cuối chứa xâu mẫu \(s\) gồm \(d\) chữ cái thường tiếng Anh.

Output

  • Ghi ra số lượng ít nhất các phép biến đổi xâu cần thực hiện. Trong trường hợp không có phương án tiến hành các phép biến đổi xâu trên \(n\) xâu \(s_1, s_2, \ldots, s_n\) để nhận được xâu mẫu \(s\) thì ghi số \(-1\).

Example

Test 1

Input
3
abc
cab
bca
acb
Output
2
Note
  • Thực hiện phép biến đổi xâu \((1, 3, 2)\): đổi chỗ kí tự thứ 2 của xâu 1 và 3 nhận được xâu \(s_1=\) acc, \(s_3=\) bba;
  • Thực hiện phép biến đổi xâu \((1, 2, 3)\): đổi chỗ kí tự thứ 3 của xâu 1 và 2 nhận được xâu \(s_1=\) acb chính là xâu mẫu \(s\) đã cho.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: