#include <bits/stdc++.h>
int n, m, sg[50][50][50][50][2];
char str[30], a[30][30];
int dp(int l1, int l2, int r1, int r2, int o);
int main(void) {
  scanf("%d%d", &n, &m);
  int i, j;
  for (i = 1; i <= n; i++) {
    scanf("%s", str);
    for (j = 1; j <= m; j++) a[i][j] = str[j - 1];
  }
  memset(sg, -1, sizeof(sg));
  if (dp(0, n + m, 0, n + m, 0) ^ dp(0, n + m, 0, n + m, 1))
    printf("WIN\n");
  else
    printf("LOSE\n");
  return 0;
}
int dp(int l1, int l2, int r1, int r2, int o) {
  if (sg[l1][l2][r1][r2][o] >= 0) return sg[l1][l2][r1][r2][o];
  char f[410];
  memset(f, 0, sizeof(f));
  int i, j;
  for (i = 1; i <= n; i++)
    for (j = 1; j <= m; j++)
      if (i + j - 1 > l1 && i + j - 1 < l2 && i - j + m > r1 &&
          i - j + m < r2 && (i + j) % 2 == o) {
        if (a[i][j] == 'L' && (dp(l1, i + j - 1, r1, r2, o) ^
                               dp(i + j - 1, l2, r1, r2, o)) <= n * m)
          f[dp(l1, i + j - 1, r1, r2, o) ^ dp(i + j - 1, l2, r1, r2, o)] = 1;
        else if (a[i][j] == 'R' && (dp(l1, l2, r1, i - j + m, o) ^
                                    dp(l1, l2, i - j + m, r2, o)) <= n * m)
          f[dp(l1, l2, r1, i - j + m, o) ^ dp(l1, l2, i - j + m, r2, o)] = 1;
        else if (a[i][j] == 'X' &&
                 (dp(l1, i + j - 1, r1, i - j + m, o) ^
                  dp(l1, i + j - 1, i - j + m, r2, o) ^
                  dp(i + j - 1, l2, r1, i - j + m, o) ^
                  dp(i + j - 1, l2, i - j + m, r2, o)) <= n * m)
          f[dp(l1, i + j - 1, r1, i - j + m, o) ^
            dp(l1, i + j - 1, i - j + m, r2, o) ^
            dp(i + j - 1, l2, r1, i - j + m, o) ^
            dp(i + j - 1, l2, i - j + m, r2, o)] = 1;
      }
  for (i = 0; i <= n * m; i++)
    if (!f[i]) break;
  return sg[l1][l2][r1][r2][o] = i;
}
