Dãy ngoặc đúng
Xem dạng PDFCho xâu ~S~ chỉ gồm các ký tự <, >, {, },[, ], (, ). Các ký tự này chia thành hai nhóm: nhóm dấu ngoặc đóng >, }, ], ) và nhóm dấu ngoặc mở <, {, [, (. Có thể thay thế bất kì dấu ngoặc nào thuộc cùng một nhóm cho nhau. Chẳng hạn, có thể thay thế < bằng {, nhưng không được thay thế < bằng ) hay >.
Một dãy dấu ngoặc đúng là một dãy các ký tự <, >, {, },[, ], (, ) được định nghĩa như sau:
- Dãy rỗng là dãy ngoặc đúng.
- Nếu ~A~ và ~B~ là dãy ngoặc đúng thì
<A>B,{A}B,[A]B,(A)Bcũng là dãy ngoặc đúng. - Nếu ~A~ và ~B~ là dãy ngoặc đúng thì
ABcũng là dãy ngoặc đúng.
Ví dụ: Xâu [[(){}]<>] là dãy ngoặc đúng. Xâu [)() và ][()() không phải là dãy ngoặc đúng.
Yêu cầu
Hãy xác định số ít nhất các lần thay thế dấu ngoặc để xâu ~S~ trở thành dãy ngoặc đúng.
Dữ liệu vào
Gồm một dòng chứa xâu ~S~ khác rỗng. Độ dài của xâu ~S~ không quá ~10^6~.
Kết quả ra
Nếu không thể thay thế các dấu ngoặc để xâu ~S~ trở thành dãy ngoặc đúng thì xuất ra màn hình ~-1~. Ngược lại xuất ra màn hình số ít nhất các lần thay thế dấu ngoặc để xâu ~S~ trở thành dãy ngoặc đúng.
Sample Input 1
[<}){}
Sample Output 1
2
Sample Input 2
]]
Sample Output 2
-1
Bình luận