#include <iostream>
using namespace std;
class Stack{
private:
int top,maxSize;
int *element;
public:
Stack(int sz){
top=0;
maxSize=sz;
element=new int[sz];
}
bool isFull(){
if(top==maxSize)
return true;
else
return false;
}
bool isEmpty(){
if(top==0)
return true;
else
return false;
}
bool push(char ch){
if(isFull())
return false;
element[top]=ch;
top++;
}
char pop(){
if(isEmpty())
return 0;
return element[--top];
}
int check(char *exp){
for(int i=0;exp[i]!='#';i++){
if(exp[i]=='('||exp[i]=='{'||exp[i]=='<'||exp[i]=='['){
push(exp[i]);
}
if(exp[i]==')'||exp[i]=='}'||exp[i]=='<'||exp[i]==']'){
char c=pop();
if((exp[i]==')'&&c!='(')||(exp[i]=='}'&&c!='{')
||exp[i]=='>'&&c!='<'||exp[i]==']'&&c!='[')
return 0;
}
}
return 1;
}
};
int main(){
Stack s(10);
char *e=new char[10];
cin>>e;
cout<<s.check(e);
return 0;
}