/*
#include <stdio.h>
int stack[80000],top=-1;
void push(int data)
{
stack[++top]=data;
}
int pop()
{
return stack[top--];
}
int main()
{
long long int i,cnt=0,a,b;
scanf("%lld",&a);
scanf("%lld",&b);
push(b);
for(i=2; i<=a; i++)
{
scanf("%lld",&b);
while(stack[top]<=b && top>=0)
{
pop();
}
push(b);
cnt=cnt+top;
}
printf("%lld",cnt);
}
*/
#include <stdio.h>
char stack[31],top=-1;
void push(char data)
{
stack[++top]=data;
}
char pop()
{
return stack[top--];
}
int main()
{
int i,len,tmp;
char str[32];
scanf("%s",str);
len=strlen(str);
for(i=0;i<len;i++)
{
if(str[i]=='(')
{
if(str[i]=='(')
{
push('(');
}
else
{
tmp=pop();
if(tmp==')')
{
printf("0");
return 0;
}
}
}
else
{
if(str[i]=='[')
{
push('[');
}
else
{
tmp=pop();
if(tmp==']')
{
printf("0");
return 0;
}
}
}
}
}