#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

string a;

bool is(char a) {
    if (a >= 'a' && a <= 'z') return 1;
    if (a >= 'A' && a <= 'Z') return 1;
    if (a >= '0' && a <= '9') return 1;
    return 0;
}

bool test1() {
    for (int i = 0; i < a.size(); ++i)
        if (!(a[i] == '[' || a[i] == ']' || is(a[i]) || a[i] == '+' || a[i] == '-')) // caractere interzise
            return 0;
    return 1;
}

bool test2() {
    int nr = 0;
    for (int i = 0; i < a.size(); ++i) {
        if (a[i] == '[')
            ++nr;
        else if (a[i] == ']')
            --nr;
        if (nr < 0)
            return 0;
    }
    if (nr != 0) return 0;
    return 1;
}

bool modifica1() {
    string b;
    for(int i = 0; i < a.size(); ++i) {
        if (a[i] == '[') {
            if (a[i + 1] == '+' || a[i + 1] == '-') return 0;
            b.push_back('+');
        }
        else if (a[i] != ']')
            b.push_back(a[i]);
    }
    a = b;
    return 1;
}
bool test3() {
    if (a[0] == '+' || a[0] == '-') return 0;
    if (a[a.size() - 1] == '+' || a[a.size() - 1] == '+') return 0;
    return 1;
}

bool test4() {
    int nr1 = 0, nr2 = 0, nr3 = 0;
    for (int i = 0; i < a.size() - 1; ++i) {
        string c = a.substr(i, 2);
        if (c == "bx" || c == "bp") {
            ++nr1;
            i += 1;
            if (i + 1 < a.size() && is(a[i + 1])) return 0;
        }
        else if (c == "si" || c == "di") {
            ++nr2;
            i += 1;
            if (i + 1 < a.size() && is(a[i + 1])) return 0;
        }
        else {
            if (a[i] >= 'a' && a[i] <= 'z')
                ++nr3;
        }
    }
    if (nr1 > 1 || nr2 > 1 || nr3 > 1) return 0;
    return 1;

}

bool test0() {
    for (int i = 0; i < a.size() - 1; ++i)
        if (a[i] >= 'A' && a[i] <= 'Z') {
            if (!is(a[i + 1]) && (i == 0 || !is(a[i - 1])))
                return 0;
            i += 1;
        }
        else if (a[i] >= 'a' && a[i] <= 'z') i += 1;
    return 1;
}

bool solve() {
    if (!test0()) return 0;
    if (!test1()) return 0;
    if (!test2()) return 0;
    if (!test3()) return 0;
    if (!modifica1()) return 0;

    transform(a.begin(), a.end(), a.begin(), ::tolower);

    if (!test4()) return 0;

    return 1;

}

int main() {
    #ifndef ONLINE_JUDGE
    freopen("b.in", "r", stdin);
    #endif // ONLINE_JUDGE

    while (cin >> a) {
        if (solve())
            cout << "OK\n";
        else
            cout << "ERROR\n";
    }

    return 0;
}