package test;

import java.util.Scanner;

public class Main16 {

    public static int[] addFlag(char[] chs)
    {
        int[] left = new int[chs.length];
        int[] list = new int[chs.length];
        int leftFlag = 0;
        int listFlag = 0;
        int times = 1;
        for(int i=0;i<chs.length;i++)
        {
            if(chs[i] == '(')
            {
                left[leftFlag] = times;
                times++;
                leftFlag++;
                list[listFlag] = left[leftFlag-1];
                listFlag++;
            }else if(chs[i] == ')')
            {
                list[listFlag] = left[leftFlag-1];
                listFlag++;
                leftFlag--;
            }
        }
        return list;
    }
    public static int count(int[] list, int start, int end)
    {
        if(start >= end)
        {
            return 0;
        }
        int ans = 0;
        while(start < end)
        {
            if(list[start] == list[end])
            {
                ans++;
                start++;
                end--;
            }else{
                break;    
            }
        }
        int temp = 1;
        for(int i=ans;i>=1;i--)
        {
            temp *= i;
        }
        ans = temp;
        /*******递归*******/
        int copyend = end - 1;
        while((copyend > start) && (list[copyend] != list[start]))
        {
            copyend--;
        }
        ans += count(list, start, copyend);
        ans += count(list, copyend+1, end);
        return ans;
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        char[] chs = str.toCharArray();
        int[] list = addFlag(chs);
        int ans = count(list, 0, list.length-1);
        System.out.println(ans);
    }

}