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.

Examples

Input

<>>


Output

3


Input

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


Output

28
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
		String s = in.next();
		System.out.println(solve(s));
		in.close();
	}

	private static long solve(String s) {
		int n = s.length() + 1;
		long[] a = new long[n];
		s = ">".concat(s).concat("<");
		long nt = 0;
		for (int i = 0; i < n; i++)
			if (s.charAt(i) == '>' && s.charAt(i + 1) == '<') {
				nt += setR(i, s, a);
				nt += setL(i, s, a);
			}
		return nt;
	}

	private static long setL(int p, String s, long[] a) {
		long nt = 0;
		for (int i = p - 1; i >= 0; i--)
			if (s.charAt(i) == '>') {
				a[i] = a[i + 1] + 1;
				nt += a[i];
			} else {
				a[i] = Math.max(a[i + 1], a[i - 1]) + 1;
				nt += a[i];
				break;
			}
		return nt;
	}

	private static long setR(int p, String s, long[] a) {
		long nt = 0;
		for (int i = p + 1; i < a.length; i++)
			if (s.charAt(i + 1) == '<') {
				a[i] = a[i - 1] + 1;
				nt += a[i];
			} else
				break;
		return nt;
	}
}