#include <bits/stdc++.h>
using namespace std;
typedef struct {
  int x, y;
  vector<string> str;
} use;
bool issafe(int x, int y, vector<string> str) {
  if (x < 0 || y < 0) return false;
  if (x > 7 || y > 7) return false;
  if (str[x][y] == 'S') return false;
  if (x > 0) {
    if (str[x - 1][y] == 'S') return false;
  }
  return true;
}
int main() {
  vector<string> str;
  string s;
  for (int i = 0; i < 8; ++i) {
    cin >> s;
    str.push_back(s);
  }
  str[7][0] = '.';
  str[0][7] = '.';
  string t = "........";
  queue<use> q;
  bool visited[8][8];
  for (int i = 0; i < 8; ++i)
    for (int j = 0; j < 8; ++j) visited[i][j] = false;
  use u;
  u.x = 7;
  u.y = 0;
  u.str = str;
  q.push(u);
  bool res = false;
  while (!q.empty()) {
    u = q.front();
    q.pop();
    vector<string> p;
    p.push_back(t);
    visited[u.x][u.y] = true;
    if (u.x == 0 && u.y == 7) {
      res = true;
      break;
    }
    for (int i = 0; i < 7; ++i) p.push_back(u.str[i]);
    for (int dx = -1; dx < 2; ++dx)
      for (int dy = -1; dy < 2; ++dy) {
        if (issafe(u.x + dx, u.y + dy, u.str)) {
          if (visited[u.x + dx][u.y + dy] == false) {
            use tmp;
            tmp.x = u.x + dx;
            tmp.y = u.y + dy;
            tmp.str = p;
            q.push(tmp);
          }
        }
      }
    if (issafe(u.x, u.y, u.str)) {
      use tmp;
      tmp.x = u.x;
      tmp.y = u.y;
      tmp.str = p;
      q.push(tmp);
    }
  }
  if (res) {
    cout << "WIN\n";
  } else
    cout << "LOSE\n";
  return 0;
}
