#include #include #include using namespace std; int n,m,i,j; char c[100001]; int beginx; char permision[]="+-[]BDIPSX"; bool force_exit; bool allert; bool last_letter,not_X_P,not_S_D,rmd,L_appear; char remind; void refresh() { allert=false; last_letter=false; not_X_P=false; not_S_D=false; L_appear=false; } bool notappear(char ch) { int i,m; if(isalpha(ch)==true) return true; if(isdigit(ch)==true) return true; m=strlen(permision)-1; for(i=0;i<=m;i++) { if(ch==permision[i]) return true; } return false; } bool valid(char ch) { if(notappear(ch)==false) return false; if(ch=='+'||ch=='-') { allert=true; if(last_letter==false) return false; } if(ch=='[') { beginx++; last_letter=false; } if(ch==']') { beginx--; last_letter=true; } if(isalpha(ch)==true&&isalpha(remind)==true) { if(remind=='B'||remind=='b') { if(not_X_P==true) return false; if(ch!='X'&&ch!='x'&&ch!='P'&&ch!='p') return false; not_X_P=true; last_letter=true; allert=false; } else { if(ch=='I'||ch=='i') { if(not_S_D==true) return false; if(remind!='S'&&remind!='s'&&remind!='D'&&remind!='d') return false; not_S_D=true; last_letter=true; allert=false; } } } if(isdigit(ch)==true) allert=false; if(ch>='a'&&ch<='z') { if(L_appear==true) return false; L_appear==true; allert=false; } remind=ch; return true; } int main() { //freopen("date.in","r",stdin); //freopen("date.out","w",stdout); gets(c); n=strlen(c)-1; while(n>=0) { refresh(); force_exit=false; for(i=0;i<=n;i++) { if(valid(c[i])==false) { printf("ERROR\n"); force_exit=true; break; } } if(beginx&&force_exit==false){ printf("ERROR\n"); force_exit=true;} if(allert==true&&force_exit==false){ printf("ERROR\n"); force_exit=true;} if(force_exit==false) printf("OK\n"); gets(c); n=strlen(c)-1; } return 0; }