#include #include #include #include #include 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, i; //cerr << a.size() - 1; for (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 (i != a.size() && (a[a.size() - 1] >= 'a' && a[a.size() - 1] <= 'z')) { ++nr3; } if (nr1 > 1 || nr2 > 1 || nr3 > 1) return 0; return 1; } bool test0() { for (int i = 0; i < a.size(); ++i) if (a[i] >= 'A' && a[i] <= 'Z') { if (((i != a.size() - 1) && !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 (getline(cin, a)) { if (solve()) cout << "OK\n"; else cout << "ERROR\n"; } return 0; }