#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#define SIZE 10
typedef struct hold
{
char sign[SIZE];
int top;
} HOLD;
int main()
{
int cycle;
int logn = 0;
HOLD example;
example.top = 0;
char str[100];
scanf("%s",str);
for(cycle = 0;cycle < strlen(str);cycle++)
{
switch(str[cycle])
{
case '(':
example.sign[example.top] = str[cycle];
example.top++;
break;
case '[':
example.sign[example.top] = str[cycle];
example.top++;
break;
case '{':
example.sign[example.top] = str[cycle];
example.top++;
break;
}
if(str[cycle] == ')'&&example.sign[example.top-1] == '(')
{
//example.sign[example.top] = NULL;
example.top--;
}
if(str[cycle] == ']'&&example.sign[example.top-1] == '[')
{
//example.sign[example.top] = NULL;
example.top--;
}
if(str[cycle] == '}'&&example.sign[example.top-1] == '{')
{
//example.sign[example.top] = NULL;
example.top--;
}
//printf("%d ",example.top);
}
if(example.top > 1)
{
example.top = 0;
printf("%d",example.top);
}
else
{
example.top = 1;
printf("%d",example.top);
}
//printf("%s",example.sign);
return 0;
}
{
char sign[SIZE];
int top;
} HOLD;
int main()
{
int cycle;
int logn = 0;
HOLD example;
example.top = 0;
char str[100];
scanf("%s",str);
for(cycle = 0;cycle < strlen(str);cycle++)
{
switch(str[cycle])
{
case '(':
example.sign[example.top] = str[cycle];
example.top++;
break;
case '[':
example.sign[example.top] = str[cycle];
example.top++;
break;
case '{':
example.sign[example.top] = str[cycle];
example.top++;
break;
}
if(str[cycle] == ')'&&example.sign[example.top-1] == '(')
{
//example.sign[example.top] = NULL;
example.top--;
}
if(str[cycle] == ']'&&example.sign[example.top-1] == '[')
{
//example.sign[example.top] = NULL;
example.top--;
}
if(str[cycle] == '}'&&example.sign[example.top-1] == '{')
{
//example.sign[example.top] = NULL;
example.top--;
}
//printf("%d ",example.top);
}
if(example.top > 1)
{
example.top = 0;
printf("%d",example.top);
}
else
{
example.top = 1;
printf("%d",example.top);
}
//printf("%s",example.sign);
return 0;
}