Trong trò chơi Zentric, một nhân vật đứng trên lưới ô vuông vô hạn và mỗi bước di chuyển sang một ô kề cạnh. Chuỗi lệnh \(S\) gồm các ký tự L (sang trái), R (sang phải), U (lên trên), D (xuống dưới).
Để qua màn, bạn phải tạo ra một lộ trình khép kín từ chuỗi lệnh \(S\) bằng cách: xóa đi một số ký tự tùy ý (có thể không xóa) và sắp xếp lại các ký tự còn lại theo thứ tự tùy ý. Lộ trình thu được (dài ít nhất \(1\) lệnh) phải thỏa mãn: nhân vật xuất phát từ một ô, đi theo các lệnh, không bước vào cùng một ô hai lần, và sau lệnh cuối cùng phải quay về đúng ô xuất phát. Việc quay về ô xuất phát ở cuối lộ trình không bị tính là "bước vào một ô lần thứ hai", nhưng ngoài ra mọi ô đã đi qua (kể cả ô xuất phát) không được bước vào lại. Ví dụ LR là lộ trình hợp lệ (đi sang trái rồi quay lại), còn LLRR thì không hợp lệ vì đi qua ô bên trái hai lần.
Hãy tìm độ dài lớn nhất của một lộ trình hợp lệ có thể tạo ra. Nếu không thể tạo lộ trình nào, in ra \(-1\).
Input
Một dòng duy nhất chứa chuỗi \(S\) chỉ gồm các ký tự L, R, U, D.
Output
In ra một số nguyên là độ dài lớn nhất, hoặc \(-1\) nếu không thể.
Constraints
- \(1 \le |S| \le 10^6\)
Sample Input 1
RRULLDDUR
Sample Output 1
8
Sample Input 2
LLRRRR
Sample Output 2
2
Sample Input 3
UUUR
Sample Output 3
-1
Explanation
- Ví dụ 1: có \(3\) lệnh
R, \(2\) lệnhL, \(2\) lệnhU, \(2\) lệnhD. Có thể đi theo hình chữ nhậtRRUULLDD(độ dài \(8\)), không thể dài hơn. - Ví dụ 2: chỉ có thể đi ngang;
LRlà lộ trình dài nhất không đi lại cùng một ô. - Ví dụ 3: không có cặp lệnh ngược hướng nào, nên không thể quay về ô xuất phát.
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.