Biến đổi Palindrome
Đề bài
Mô tả
Nam đang chỉnh sửa một xâu gồm chữ cái tiếng Anh in thường trên máy tính, chỉ dùng phím mũi tên: trái, phải, lên, xuống.
Có một con trỏ đang chỉ vào một ký tự của xâu. Giả sử con trỏ đang ở vị trí (, xâu đánh số từ ):
- Phím trái / phải di chuyển con trỏ sang trái / phải một vị trí. Xâu có tính vòng tròn: nhấn trái tại vị trí đưa con trỏ đến vị trí , nhấn phải tại vị trí đưa con trỏ về vị trí .
- Phím lên / xuống thay ký tự tại vị trí con trỏ bằng ký tự liền sau / liền trước trong bảng chữ cái. Bảng chữ cái cũng có tính vòng tròn: sau 'z' là 'a', trước 'a' là 'z'.
Ban đầu con trỏ ở vị trí . Hãy tính số lần nhấn phím ít nhất để biến thành một xâu đối xứng (palindrome), tức là xâu đọc xuôi và đọc ngược giống nhau.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và (, ): độ dài xâu và vị trí ban đầu của con trỏ.
- Dòng thứ hai chứa xâu gồm chữ cái tiếng Anh in thường.
Dữ liệu ra
In ra một số nguyên duy nhất: số lần nhấn phím ít nhất để trở thành palindrome.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 8 3 aeabcaez |
6 | Nhấn phải sang vị trí ( lần), nhấn lên đổi 'b' thành 'c' ( lần), nhấn trái lần về vị trí , nhấn xuống đổi 'a' thành 'z' ( lần, vì bảng chữ cái vòng tròn). Xâu trở thành zeaccaez, là palindrome. Tổng cộng lần nhấn. |
| 10 5 abcdeedcba |
0 | Xâu đã là palindrome, không cần nhấn phím nào. |
| 2 2 at |
7 | Đổi 't' thành 'a' mất lần nhấn lên (t→u→...→z→a), hoặc đổi 'a' thành 't' cũng tối thiểu lần. Con trỏ đã ở vị trí cần đổi nên không tốn lượt di chuyển. |
Bình luận