#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
const int INF = numeric_limits<int>::max();
const double EPS = numeric_limits<double>::epsilon();
char maze[8][8];
const int posDelta[2][9] = {-1, -1, 0, 1, 1, 1,  0,  -1, 0,
                            0,  1,  1, 1, 0, -1, -1, -1, 0};
bool foundSolution = false;
bool first = true;
int steps = 0;
void dfs(int x, int y) {
  if (!first) {
    for (int i = 8 - 1; i >= 0; i--) {
      for (int j = 0; j < 8; j++) {
        if (maze[i][j] == 'S') {
          if (i == 7) {
            maze[i][j] = '.';
            continue;
          }
          if (maze[i + 1][j] == 'M') {
            return;
          }
          maze[i][j] = '.';
          maze[i + 1][j] = 'S';
        }
      }
    }
  } else {
    first = false;
  }
  char mazeCache[8][8];
  int newx, newy;
  for (int i = 0; i < 9; i++) {
    newx = x + posDelta[0][i];
    newy = y + posDelta[1][i];
    if (newx >= 0 && newx <= 7 && newy >= 0 && newy <= 7 &&
        maze[newx][newy] != 'S' && !foundSolution) {
      if (maze[newx][newy] == 'A') {
        foundSolution = true;
        return;
      }
      memcpy(mazeCache, maze, sizeof(maze));
      maze[x][y] = '.';
      maze[newx][newy] = 'M';
      steps++;
      dfs(newx, newy);
      steps--;
      memcpy(maze, mazeCache, sizeof(mazeCache));
    }
  }
}
int main() {
  bool hasStatue = false;
  char c;
  for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 8; j++) {
      scanf("%c", &c);
      if (c == '\n' || c == '\n') {
        j--;
        continue;
      }
      if (c == 'S') {
        hasStatue = true;
      }
      maze[i][j] = c;
    }
  }
  if (!hasStatue) {
    printf("WIN\n");
    return 0;
  }
  dfs(7, 0);
  if (foundSolution) {
    printf("WIN\n");
  } else {
    printf("LOSE\n");
  }
  return 0;
}
