Trong trò chơi điện tử có tên Zentric, nhân vật được điều khiển di chuyển trên một ô lưới
(vô hạn).
Khởi đầu trò chơi, nhân vật được đặt tại một ô bất kỳ.
Tại mỗi bước, nhân vật có thể di chuyển đến một ô liền kề là một trong bốn ô:
bên trái, bên phải, phía trên, phía dưới của ô hiện tại.
Để hướng dẫn nhân vật di chuyển, cần một chuỗi lệnh \(S\) gồm các ký tự:
L(Left) -- sang tráiR(Right) -- sang phảiU(Up) -- lên trênD(Down) -- xuống dưới
Cho trước chuỗi lệnh \(S\).
Để hoàn thành màn chơi, bạn cần chỉnh sửa lại chuỗi lệnh \(S\) sao cho:
- Nhân vật di chuyển theo chuỗi lệnh mới và
- Quay trở về đúng ô xuất phát.
Việc chỉnh sửa chuỗi lệnh \(S\) được thực hiện các cách sau:
- Xóa đi một số ký tự (có thể không xóa ký tự nào) trong chuỗi \(S\);
- Thay đổi vị trí các ký tự trong chuỗi \(S\) theo ý muốn.
Yêu cầu:
Hãy xác định độ dài lớn nhất có thể của chuỗi lệnh \(S\) sau khi thực hiện việc chỉnh sửa. Ngoại trừ ô xuất phát, mỗi ô chỉ đi qua được 1 lần. Nếu không thể chỉnh sửa chuỗi lệnh \(S\) để hoàn thành màn chơi, hãy in ra -1.
Input
Tệp văn bản GAME.INP gồm:
- Dòng 1: Chuỗi lệnh \(S\) (\(|S| \le 10^6\)).
Output
Ghi ra tệp GAME.OUT:
- Một số nguyên duy nhất là kết quả của bài toán.
- Trường hợp không thể chỉnh sửa chuỗi lệnh \(S\) để hoàn thành màn chơi thì ghi
-1.
Example
Test 1
Input
LURD
Output
4
Test 2
Input
LDLDURURL
Output
8
Test 3
Input
LLLLU
Output
-1
Scoring
- 60% số test: \(|S| \le 255\)
- 40% số test: không có ràng buộc gì thêm
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.