В разметке XML
некоторые символы имеют строго предопределенное значение и используются в
служебных целях. Например, символ «<» определяет начало открывающего или
закрывающего тега.
Поэтому, когда в XML-документ нужно поместить текст, содержащий служебные
символы, этот текст предварительно преобразуется следующим образом: каждый
служебный символ заменяется на «&название_символа;». Такое
преобразование обычно выполняет функция XMLEncode.
Всего определено 5 служебных
символов:
Название служебного символа
|
Вид служебного
символа
|
Обозначение
служебного символа
|
меньше
|
<
|
<
|
больше
|
>
|
>
|
двойная кавычка
|
“
|
"
|
одинарная кавычка
|
‘
|
'
|
амперсанд
|
&
|
&
|
Функция XMLEncode может применяться к некоторой строке S
несколько раз.
Например, пусть
S=«2<3<4».
Тогда: XMLEncode(S)=«2<3<4»,
XMLEncode(2XMLEncode(S))=«&lt;3&lt;4».
Пусть известен результат – строка
R – после нескольких применений функции XMLEncode. Напишите программу определения максимально возможного
количества вызовов функции XMLEncode, чтобы в
результате получилась именно строка R.
Ограничения
1 ≤ |R| ≤ 100000. Здесь |R|
– длина строки R.
Входные данные
В единственной строке входного
файла содержится строка R. Строка может содержать
большие и маленькие латинские буквы, цифры, пробелы, знаки препинания и
служебные символы XML, перечисленные выше.
Выходные данные
Выходной файл должен содержать
одно число – максимально возможное количество вызовов функции XMLEncode, либо –1,
если строку могли преобразовывать бесконечно.
Примеры
Input
|
Output
|
Everybody
knows that 2 < 3.
|
0
|
Input
|
Output
|
Everybody
knows that 2 < 3.
|
1
|