#include <bits/stdc++.h>
using namespace std;
int delta[9][2] = {{0, 0},  {0, 1},  {1, 0},   {0, -1}, {-1, 0},
                   {1, -1}, {-1, 1}, {-1, -1}, {1, 1}};
struct Pos {
  int x, y;
  int step;
};
struct maze {
  string str[10];
};
maze M[10];
queue<Pos> q;
string str[10];
bool visited[10][10][10];
bool check(int x, int y, int step) {
  if (x < 0 || x >= 8 || y < 0 || y >= 8) return false;
  if (M[step].str[x][y] == 'S') return false;
  if (x > 0 && M[step].str[x - 1][y] == 'S') return false;
  if (visited[x][y][step + 1] == true) return false;
  return true;
}
bool Bfs() {
  memset(visited, false, sizeof(visited));
  Pos start;
  start.x = 7;
  start.y = 0;
  start.step = 0;
  visited[7][0][0] = true;
  q.push(start);
  while (!q.empty()) {
    Pos cur = q.front();
    q.pop();
    if (cur.step > 9 || (cur.x == 0 && cur.y == 7)) {
      return true;
    }
    for (int i = 0; i < 9; i++) {
      Pos next;
      next.x = cur.x + delta[i][0];
      next.y = cur.y + delta[i][1];
      if (check(next.x, next.y, cur.step)) {
        next.step = cur.step + 1;
        visited[next.x][next.y][next.step] = true;
        q.push(next);
      }
    }
  }
  return false;
}
void solve() {
  string last_str[10];
  for (int i = 0; i < 8; i++) {
    last_str[i] = str[i];
    for (int j = 0; j < 8; j++) M[0].str[i] += str[i][j];
  }
  for (int step = 1; step <= 8; step++) {
    for (int i = 0; i < 8; i++) {
      for (int j = 0; j < 8; j++) M[step].str[i] += '.';
    }
    for (int i = 0; i < 8; i++) {
      for (int j = 0; j < 8; j++) {
        if (last_str[i][j] == 'S') {
          if (i + 1 < 8) {
            M[step].str[i + 1][j] = 'S';
          }
        }
      }
    }
    for (int i = 0; i < 8; i++) {
      last_str[i] = M[step].str[i];
    }
  }
  bool res = Bfs();
  if (res == true) {
    cout << "WIN" << endl;
  } else {
    cout << "LOSE" << endl;
  }
}
int main() {
  for (int i = 0; i < 8; i++) {
    cin >> str[i];
  }
  solve();
  return 0;
}
