#include <iostream>
#include <string>
#include <locale>

using namespace std;


int main(){
	string s;
	bool p;
	bool I, B, V;//index register, base register, variable
	int upperbound, lowerbound;
	while(1){
		getline(cin, s);
		if(cin.eof()){
			break;
		}
		for(int i=0; i<(int)s.size(); i++){
			if(s[i] !=' '){lowerbound = i;}
		}
		for(int i=(int)s.size()-1; i>=0; i--){
			if(s[i] != ' '){upperbound = i+1;}
		}
		s+='\0';
		p=true;
		I = B = V = false;
		for(int i=lowerbound; i<upperbound-1; i++){
			if(isalpha(s[i])){//spremenljivka ali register
				if(isalpha(s[i+1])){//register
					s[i] = tolower(s[i]);
					s[i+1] = tolower(s[i+1]);
					if(s[i] == 'b' && (s[i+1] == 'x' || s[i+1] == 'p')){//base register
						if(B==true){//sta v adressu vsaj 2 base registra
							p=false;	break;	
						}
						else{B=true;}
						i++;//da gre čez drugo črko registra
					}
					else if(s[i+1] == 'i' && (s[i] == 's' || s[i] == 'd')){
						if(I==true){//index register
							p=false; break;
						}
						else{I=true;}
						i++;//da gre čez drugo črko registra
					}
				}
				else{//spremenljivka
					if(isupper(s[i])){
						p=false;  break;
					}
					if(V == true){p=false; break;}
					else{V=true;}
				}
			}
			else{//če ni črkaA
				if(s[i] == '+' || s[i] == '-'){
					if(i==lowerbound || s[i-1] == '['){//+ in - ne smeta biti na začetku
						p=false; break;
					}
					else if(s[i+1] == '\0' || s[i+1] == ']'){
						p=false; break;//+ in - ne smeta biti na koncu
					}
				}
				else if(s[i] != '[' && s[i] != ']' && isdigit(s[i]) == false){
					p=false;break;
				}
			}
		}

		if(p==true){cout<<"OK\n";}
		else{p=true;	cout<<"ERROR\n";}

	}



	return 0;
}