#include <bits/stdc++.h>
using namespace std;
int n, m, dp[2][22 * 2][22 * 2][22 * 2][22 * 2];
char Map[22][22];
int sg(int maxxay, int minxay, int maxxdy, int minxdy, int typ) {
  if (maxxay < minxay || maxxdy < minxdy) return 0;
  if (dp[typ][maxxay][minxay][maxxdy + m][minxdy + m] == -1) {
    bool vis[22 * 22] = {};
    for (int i = 0; i < n; i++)
      for (int j = max((maxxay - i & 1), max(minxay - i, i - maxxdy));
           j <= min(m - 1, min(maxxay - i, i - minxdy)); j += 2) {
        if (Map[i][j] == 'L')
          vis[sg(maxxay, i + j + 2, maxxdy, minxdy, typ) ^
              sg(i + j - 2, minxay, maxxdy, minxdy, typ)] = 1;
        if (Map[i][j] == 'R')
          vis[sg(maxxay, minxay, maxxdy, i - j + 2, typ) ^
              sg(maxxay, minxay, i - j - 2, minxdy, typ)] = 1;
        if (Map[i][j] == 'X')
          vis[sg(maxxay, i + j + 2, maxxdy, i - j + 2, typ) ^
              sg(i + j - 2, minxay, i - j - 2, minxdy, typ) ^
              sg(maxxay, i + j + 2, i - j - 2, minxdy, typ) ^
              sg(i + j - 2, minxay, maxxdy, i - j + 2, typ)] = 1;
      }
    for (dp[typ][maxxay][minxay][maxxdy + m][minxdy + m] = 0;
         vis[dp[typ][maxxay][minxay][maxxdy + m][minxdy + m]];
         dp[typ][maxxay][minxay][maxxdy + m][minxdy + m]++)
      ;
  }
  return dp[typ][maxxay][minxay][maxxdy + m][minxdy + m];
}
int main() {
  memset(dp, -1, sizeof dp);
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; i++) scanf("%s", Map[i]);
  if (sg((n + m - 2 & 1) ? n + m - 3 : n + m - 2, 0,
         (n - 1 & 1) ? n - 2 : n - 1, (1 - m & 1) ? 2 - m : 1 - m, 0) ^
      sg((n + m - 2 & 1) ? n + m - 2 : n + m - 3, 1,
         (n - 1 & 1) ? n - 1 : n - 2, (1 - m & 1) ? 1 - m : 2 - m, 1))
    puts("WIN");
  else
    puts("LOSE");
}
