Problem:
Score : 300 points

Problem Statement

Given is a string S of length N-1.
Each character in S is < or >.

A sequence of N non-negative integers, a_1,a_2,\cdots,a_N, is said to be good when the following condition is satisfied for all i (1 \leq i \leq N-1):

If S_i= <: a_i<a_{i+1}

If S_i= >: a_i>a_{i+1}

Find the minimum possible sum of the elements of a good sequence of N non-negative integers.

Constraints

2 \leq N \leq 5 \times 10^5

S is a string of length N-1 consisting of < and >.

Input

Input is given from Standard Input in the following format:

S

Output

Find the minimum possible sum of the elements of a good sequence of N non-negative integers.

Sample Input 1

<>>

Sample Output 1

3

a=(0,2,1,0) is a good sequence whose sum is 3.
There is no good sequence whose sum is less than 3.

Sample Input 2

<>>><<><<<<<>>><

Sample Output 2

28

Solution in Python (3.4.3) (judge verdict: Accepted)

s = input()

li = []

tmp = s[0]

if tmp == '<':
    flag = 0
else:
    flag = 1

now = 1

for i in range(len(s)-1):
    if tmp == s[i+1]:
        now += 1
    else:
        tmp = s[i+1]
        li.append(now)
        now = 1

li.append(now)
#print(li)
ans = 0
#ans_li = [0]

if flag == 0:
    ans_li = [0]
    for i in range(len(li)):
        if i % 2 == 0:
            for j in range(li[i]):
                ans_li.append(j+1)
        else:
            if li[i] > ans_li[-1]:
                ans_li[-1] = li[i]
            for k in range(li[i]):
                ans_li.append(li[i]-k-1)
else:
    ans_li = [li[0]]
    for i in range(len(li)):
        if i % 2 == 1:
            for j in range(li[i]):
                ans_li.append(j+1)
        else:
            if i != 0 and li[i] > ans_li[-1]:
                ans_li[-1] = li[i]
            for k in range(li[i]):
                ans_li.append(li[i]-k-1)

print(sum(ans_li))