Ghép xâu từ dãy con
Đề bài
Mô tả
Cho hai xâu và gồm các chữ cái Latin thường. Ban đầu có một xâu rỗng. Mỗi thao tác, bạn chọn một dãy con bất kỳ của và nối nó vào cuối xâu . Xâu không thay đổi sau mỗi thao tác.
Dãy con của một xâu là xâu thu được bằng cách xoá đi không hoặc một số ký tự mà không thay đổi thứ tự các ký tự còn lại. Ví dụ, với = "ac" và = "abcde", sau một thao tác có thể nhận được = "acace" (chọn "ace"), = "acbcd" (chọn "bcd") hoặc = "acbce" (chọn "bce").
Hãy tính số thao tác ít nhất để trở thành , hoặc cho biết điều đó là không thể.
Dữ liệu vào
- Dòng đầu tiên chứa số nguyên , số bộ dữ liệu.
- Mỗi bộ dữ liệu gồm hai dòng: dòng thứ nhất chứa xâu , dòng thứ hai chứa xâu .
Dữ liệu ra
- Với mỗi bộ dữ liệu, in ra một dòng chứa số thao tác ít nhất, hoặc nếu không thể tạo được .
Ràng buộc
- Tổng độ dài của tất cả các xâu và trong một file dữ liệu không vượt quá .
- Các xâu chỉ gồm chữ cái Latin thường.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 aabce ace abacaba aax ty yyt |
1 -1 3 |
Bộ 1: "ace" là dãy con của "aabce". Bộ 2: chữ "x" không có trong . Bộ 3: cần ba thao tác "y", "y", "t". |
| 3 aabcf ace abbcaaa aax ty yyt |
-1 -1 3 |
Bộ 1: chữ "e" không có trong "aabcf". |
| 3 ecbaa ace abbcaaa aax ty yyt |
3 -1 3 |
Bộ 1: các chữ "a", "c", "e" xuất hiện trong theo thứ tự ngược lại, nên mỗi thao tác chỉ thêm được một chữ: "a", "c", "e". |
Bình luận