#include <iostream>
#include <fstream>
#include <string.h>
#include <algorithm>
#include <fstream>
#include <bitset>
#include <map>
#include <vector>
#include <queue>
#include <stack>
#include <deque>
#include <utility>
#include <string>
#include <iomanip>
#include <cstring>
#include <cmath>

#define vint vector<int>::iterator
#define vintp vector<pair<int,int> >::iterator
#define ll long long
#define maxn 251
#define inf (1<<30)

using namespace std;

ifstream fin ("A.in");
ofstream fout("A.out");

char s[1001];
int n;

int main()
{
    while (1)
    {
        s[1] = '`';

        fgets (s+1,1024,stdin);

        if (s[1] == '`')
                break;

        n = strlen (s+1);
        if (s[1] == 'I')
            break;

        int n = strlen (s+1);
        bool ok = 1;

        if (s[1] == '+' || s[1] == '-' || s[n-1] == '+' || s[n-1] == '-')
        {
            ok = 0;
        }

        int cnt = 0;

        for (int i=1; i<=n; ++i)
        {
            if (s[i] == '[')
            {
                ++cnt;
                s[i] = '+';

                if (s[i+1] == '+' || s[i+1] == '-')
                    ok = 0;
            }
            else if (s[i] == ']')
            {
                if (s[i-1] == '+' || s[i-1] == '-')
                    ok = 0;

                if (cnt)
                    --cnt;
                else
                {
                    ok = 0;
                }
            }
        }

        if (cnt)
            ok = 0;

        int b=0,ss=0,var=0;

        for (int i=1; i<=n; ++i)
        {
            if (s[i] == 'B')
            {
                if (s[i+1] == 'P' || s[i+1] == 'X' || s[i+1] == 'p' || s[i+1] == 'x')
                {
                    ++b;
                }
                else
                {
                    ok = 0;
                }
            }
            else if (s[i] == 'I')
            {
                if (s[i-1] == 'D' ||  s[i-1] == 'S' || s[i-1] == 'd' || s[i-1] == 's')
                {
                    ++ss;
                }
                else ok = 0;
            }
            else if ('a' <= s[i] && s[i] <= 'z')
            {

                if (s[i] == 'b')
                {
                    if (s[i+1] == 'X' || s[i+1] == 'P' || s[i+1] == 'p' || s[i+1] == 'x')
                        ++b;
                    else
                        ++var;
                }
                else if (s[i] == 'x')
                {
                    if (s[i-1] != 'B' && s[i-1] != 'b')
                        ++var;
                }
                else if (s[i] == 'p')
                {
                    if (s[i-1] != 'B' && s[i-1] != 'b')
                        ++var;
                }

                else if (s[i] == 'i')
                {
                    if (s[i-1] == 's' || s[i-1] == 'S' || s[i-1] == 'd' || s[i-1] == 'D')
                        ++ss;
                    else
                        ++var;
                }
                else if (s[i] == 'd')
                {
                    if (s[i+1] != 'i' && s[i+1] != 'I')
                        ++var;
                }
                else if (s[i] == 's')
                {
                    if (s[i+1] != 'i' && s[i-1] != 'I')
                        ++var;
                }
                else ++ var;
            }
            else if (s[i] == 'X' || s[i] == 'S' || s[i] == 'P' || s[i] == 'D')
                continue;
            else if ( s[i] == '+' || s[i] == '-' || s[i] == ']' || s[i] == '\n')
                continue;
            else if   ('0' <= s[i] && s[i] <= '9')
            {
                if (('A' <= s[i-1] && s[i-1] <= 'Z') || ('a' <= s[i-1] && s[i-1] <= 'z'))
                    ok = 0;
                else if (('A' <= s[i+1] && s[i+1] <= 'Z') || ('a' <= s[i+1] && s[i+1] <= 'z'))
                    ok = 0;
            }
                else ok = 0;
        }

        if (var > 1 || b > 1 || ss > 1)
            ok = 0;

        if (ok)
            cout<<"OK";
        else cout<<"ERROR";
        cout<<"\n";
    }
}