#include <iostream>
#include <fstream>
#include <algorithm>
#include <bitset>
#include <cstdio>
#include <vector>
#include <cmath>
#include <queue>
#include <string>
#include <stack>
#include <map>
#include <set>


#define DN 55
#define pb push_back
#define per pair<int,int>
#define INF (1<<30)
#define LL long long
#define un unsigned
#define x first
#define y second
#define f cin
using namespace std;

string x;

stack< int > stiva;

bool op(char c){
    if(c=='-')
        return true;
    if(c=='+')
        return true;
    if(c=='[')
        return true;
}

int main()
{

    for(;getline(cin,x);){

        while(stiva.size())
            stiva.pop();
        int l_mici = 0 , L_MARI_A = 0, L_MARI_B = 0;


        bool valid = true;
        for(int i=0;i<x.size() && valid;++i){

            if( isdigit(x[i]) ){
                if(i-1 >=0 && !op(x[i-1]))
                    valid=false;
                continue;
               }
            if(x[i]=='['){

                stiva.push(1);
                if(i+1<x.size() && ( x[i+1]=='+' || x[i+1]=='-'))
                    valid = false;
                continue;
            }
            if(x[i]==']'){

                if(stiva.size())
                    stiva.pop();
                    else
                        valid = false;
                continue;
            }
            if( (x[i]=='+' || x[i]=='-') && i+1<x.size() && x[i+1]==']')
                    valid = false;
            if('a'<=x[i] && x[i]<='z')// e litera
            {
                if(i-1 >=0 && !op(x[i-1]))
                    valid=false;

                if(l_mici)
                    valid = false;
                ++l_mici;
                continue;
            }
            if('A'<=x[i] && x[i]<='Z'){

                if(i-1 >=0 && !op(x[i-1]))
                    valid=false;
                if (x[i] == 'B'  && i+1<x.size() && (x[i+1] =='P' || x[i+1]=='X') && L_MARI_A == 0){
                    ++L_MARI_A;
                    ++i;
                    continue;
                }

                if(x[i]=='S' && i+1<x.size() && x[i+1] =='I' && L_MARI_B == 0 ){
                        ++L_MARI_B;
                        ++i;
                        continue;
                }
                    else
                    if(x[i]=='D' && i+1<x.size() && x[i+1] =='I' && L_MARI_B == 0 ){

                                ++L_MARI_B;
                                ++i;
                                continue;
                    }
                                else
                                    valid = false;

                    continue;
            }
            if(x[i]=='-' || x[i]=='+')
                continue;
            valid = false;

        }
        if(stiva.size())
            valid=false;
        if(valid)
            cout<<"OK\n";
            else
                cout<<"ERROR\n";

    }

    return 0;
}