#include <bits/stdc++.h>
using namespace std;
namespace QoE_Library {
namespace QL_Bare_Minimum {
const double PI = 3.141592653589793238460;
const long double pi = 10000 * acos(-1.0L);
const long double E = 2.7182818284590452353;
const long double eps = 1e-10;
const int DX4[] = {0, 1, 0, -1};
const int DY4[] = {1, 0, -1, 0};
const int DX8[] = {-1, -1, -1, 0, 0, 1, 1, 1};
const int DY8[] = {-1, 0, 1, -1, 1, -1, 0, 1};
const int neigh4[][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
const int neigh8[][2] = {{-1, 0}, {-1, -1}, {0, -1}, {1, -1},
                         {1, 0},  {1, 1},   {0, 1},  {-1, 1}};
template <typename T1>
inline T1 to_type(string s) {
  T1 a;
  istringstream sin(s);
  sin >> a;
  return a;
}
template <typename T1>
inline string to_str(T1 a) {
  ostringstream sout;
  string s;
  sout >> a;
  return sout.str();
}
inline void inpS(char *a) { scanf("%s", a); }
inline int inpLLI(long long int &lld) { return scanf("%lld", &lld); }
inline int inpULLI(unsigned long long int &ulli) {
  return scanf("%llu", &ulli);
}
inline int inpI() {
  int n = 0;
  int ch = getchar();
  int sign = 1;
  while (ch < '0' || ch > '9') {
    if (ch == '-') sign = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9')
    n = (n << 3) + (n << 1) + ch - '0', ch = getchar();
  n = n * sign;
  return n;
}
inline void inpI2(int &a, int &b) {
  a = inpI();
  b = inpI();
}
inline void inpI3(int &a, int &b, int &c) {
  a = inpI();
  b = inpI();
  c = inpI();
}
inline double inpD() {
  double res = 0.0;
  char c;
  while (1) {
    c = getchar();
    if (c == ' ' || c == '\n')
      continue;
    else
      break;
  }
  res = c - '0';
  while (1) {
    c = getchar();
    if (c >= '0' && c <= '9')
      res = 10 * res + c - '0';
    else
      break;
  }
  if (c == '.') {
    double decimal = 0.0, divi = 1.0;
    while (1) {
      c = getchar();
      if (c >= '0' && c <= '9')
        decimal += (c - '0') / (divi *= 10.0);
      else
        break;
    }
    res += decimal;
  }
  return res;
}
inline void outpD(double N) {
  char buff[24], sz = 0;
  int integer = N;
  int decimal = (N - integer) * 10000000;
  int tmp = decimal;
  while (decimal) {
    buff[sz++] = '0' + decimal % 10;
    decimal /= 10;
  }
  for (int decimal2 = 1000000; decimal2 > tmp; decimal2 /= 10) {
    buff[sz++] = '0';
  }
  buff[sz++] = '.';
  if (integer == 0) buff[sz++] = '0';
  while (integer) {
    buff[sz++] = '0' + integer % 10;
    integer /= 10;
  }
  while (--sz >= 0) putchar(buff[sz]);
  putchar(10);
}
inline int outpULLI(unsigned long long int u) { return printf("%llu\n", u); }
inline int outpLLI(long long int lli) { return printf("%lld\n", lli); }
inline void outpI(int a) {
  char c;
  char snum[20];
  int i = 0;
  int sign = 0;
  if (a < 0) sign = 1;
  a = abs(a);
  do {
    snum[i++] = a % 10 + 48;
    a = a / 10;
  } while (a != 0);
  i = i - 1;
  if (sign) putchar('-');
  while (i >= 0) putchar(snum[i--]);
  putchar('\n');
}
inline void outpI2(int a, int b) {
  printf("%d ", a);
  outpI(b);
}
inline int outpS(char *s) { return printf("%s\n", s); }
template <typename T1>
void QL_swap(T1 &x, T1 &y) {
  T1 tmp;
  tmp = x;
  x = y;
  y = tmp;
}
template <typename T1>
T1 gcd(T1 a, T1 b) {
  if (!b) return a;
  return gcd(b, a % b);
}
long double euclideanDist(int x1, int y1, int x2, int y2) {
  return sqrt((x1 - x2) * (x1 - x2) / 1. + (y1 - y2) * (y1 - y2) / 1.);
}
}  // namespace QL_Bare_Minimum
}  // namespace QoE_Library
using namespace QoE_Library::QL_Bare_Minimum;
int findContEmptySpace(int *a, int m, int v) {
  for (int i = (0); i < (m - v + 1); i = i + (1)) {
    if (!a[i]) {
      int j = i;
      while (j < i + v) {
        if (a[j]) break;
        ++j;
      }
      if (j == i + v) return i;
      i = j;
    }
  }
  return -1;
}
void defragment(int *a, int m, map<int, pair<int, int> > ls) {
  for (int i = (0); i < (m); i = i + (1)) {
    int j = i;
    while (j < m && !a[j]) ++j;
    int free = j - i;
    int s = j;
    if (free) {
      map<int, pair<int, int> >::iterator it;
      for (it = ls.begin(); it != ls.end(); ++it) {
        if (it->second.first == j) {
          break;
        }
      }
      if (it != ls.end()) {
        int s1 = it->second.first;
        int s2 = it->second.second;
        for (int k = (s1 - free); k < (s1); k = k + (1)) a[k] = 1;
        for (int k = (s2 - free); k < (s2); k = k + (1)) a[k] = 0;
        it->second.first -= free;
        it->second.second -= free;
        i = it->second.first;
      }
    } else
      i = j;
  }
}
int main() {
  int T = 1, n, c;
  while (T--) {
    cin >> n;
    string c;
    cin >> c;
    vector<int> v;
    while (n) {
      v.push_back(n % 10);
      ;
      n /= 10;
    }
    if (!v.size()) {
      v.push_back(0);
      ;
    } else {
      sort(v.begin(), v.end());
      int i = 0;
      if (!v[i]) {
        while (i < v.size() && !v[i]) ++i;
        swap(v[0], v[i]);
      }
    }
    bool b = c.length() == v.size();
    if (b) {
      for (int i = (0); i < (v.size()); i = i + (1)) {
        if (i == c.length() || c[i] - '0' != v[i]) {
          b = 0;
          break;
        }
      }
    }
    if (b)
      cout << "OK";
    else
      cout << "WRONG_ANSWER";
    cout << endl;
  }
}
