#include <bits/stdc++.h>
using namespace std;
struct Node {
  int x, y, t;
} ST[100];
queue<Node> Queue;
char Map[10][10];
int st, startx, starty, endx, endy;
const int dx[] = {-1, -1, -1, 0, 0, 0, 1, 1, 1};
const int dy[] = {-1, 0, 1, -1, 0, 1, -1, 0, 1};
bool B[10][10][10000];
bool judge(int x, int y, int t) {
  if (x < 0 || x >= 8 || y < 0 || y >= 8) {
    return false;
  }
  if (x - t >= 0 && Map[x - t][y] == 'S') {
    return false;
  }
  t++;
  if (x - t >= 0 && Map[x - t][y] == 'S') {
    return false;
  }
  return true;
}
int main() {
  for (int i = 0; i < 8; i++) {
    scanf("%s", Map[i]);
    for (int j = 0; j < 8; j++) {
      if (Map[i][j] == 'S') {
        ST[st].x = i;
        ST[st++].y = j;
      }
      if (Map[i][j] == 'M') {
        startx = i;
        starty = j;
      }
      if (Map[i][j] == 'A') {
        endx = i;
        endy = j;
      }
    }
  }
  Node Start;
  Start.x = startx;
  Start.y = starty;
  Start.t = 0;
  Queue.push(Start);
  bool flag = false;
  while (!Queue.empty()) {
    Node now = Queue.front();
    int x = now.x;
    int y = now.y;
    int t = now.t;
    if (x == endx && y == endy) {
      flag = true;
      break;
    }
    Queue.pop();
    for (int i = 0; i < 9; i++) {
      int xx = x + dx[i];
      int yy = y + dy[i];
      int tt = t + 1;
      if (judge(xx, yy, t)) {
        Node tail;
        tail.x = xx;
        tail.y = yy;
        tail.t = tt;
        if (!B[xx][yy][tt]) {
          B[xx][yy][tt] = 1;
          Queue.push(tail);
        }
      }
    }
  }
  if (flag) {
    printf("WIN\n");
  } else {
    printf("LOSE\n");
  }
  return 0;
}
