eolymp
bolt
Try our new interface for solving problems
Məsələlər

Характеристика

Характеристика

Корректным скобочным выражением (<CBV>) будем называть строку, которая определяется следующим образом:

< CBV>::= |(<CBV>)|[<CBV>]|{<CBV>}|<CBV><CBV>

Заметим, что пустая строка является корректным скобочным выражением.

Введем обозначения: A – любое правильное скобочное выражение, B и C – два любых непустых правильных скобочных выражения. Будем называть характеристикой правильного скобочного выражения числовую функцию F от строки, представляющей правильное скобочное выражение, которая вычисляется по следующим правилам:

1.F(“”)=1

2.F(“(”+A+”)”)=F(A)+1

3. F(“[”+A+”]”)=F(A)+2

4. F(“{”+A+”}”)=F(A)+3

5.F(B+C)=F(B)*F(C)

Заметим, что здесь знак + означает операцию конкатенации (сцепления) строк.

Для заданной строки подсчитать и выдать значение числовой функции F на этой строке, если она является правильной скобочной последовательностью, в противном случае выдать текст The first mistake in position, за которым через пробел следует номер первой позиции, из-за которой строка не является правильным скобочным выражением (позиции считать занумерованными слева направо начиная с 1). Очевидно, если строка закончилась без ошибок, но осталась хотя бы одна незакрытая скобка, ошибкой будем считать позицию с номером, равным длине строке плюс 1 (как бы отсутствующую по неуважительной причине – смотри пятый пример).

Ограничения

Длина строки не превосходит 60. В строке могут быть только скобки.

Входные данные

Единственная строка – исходная строка.

Выходные данные

В единственной строке – ответ задачи.

Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri #1
Çıxış verilənləri #1
1
Giriş verilənləri #2
()
Çıxış verilənləri #2
2
Giriş verilənləri #3
[]
Çıxış verilənləri #3
3
Giriş verilənləri #4
()[(])
Çıxış verilənləri #4
The first mistake in position 5