#include <bits/stdc++.h>
using namespace std;
char str[10][10];
int d[9][2] = {-1, -1, -1, 0, -1, 1, 0, 1, 1, 1, 1, 0, 1, -1, 0, -1, 0, 0};
vector<int> v[10];
struct node {
  int x, y, k;
  node(int a = 0, int b = 0, int c = 0) {
    x = a;
    y = b;
    k = c;
  };
};
queue<node> qq;
bool vis[10][10][100];
bool chk(int x, int y, int k) {
  if (x < 0 || y < 0 || x > 7 || y > 7) return false;
  if (vis[x][y][k]) return false;
  if (k > 70) return false;
  for (int i = 0; i < v[y].size(); i++) {
    if (v[y][i] + k == x || v[y][i] + k - 1 == x) return false;
  }
  return true;
}
int main() {
  int i, j;
  for (i = 0; i < 8; i++) scanf("%s", str[i]);
  for (i = 0; i < 8; i++) {
    for (j = 0; j < 8; j++) {
      if (str[i][j] == 'S') {
        v[j].push_back(i);
      }
    }
  }
  qq.push(node(7, 0, 0));
  vis[7][0][0] = 1;
  bool ok = 0;
  while (!qq.empty()) {
    node tmp;
    tmp = qq.front();
    qq.pop();
    if (!tmp.x && tmp.y == 7) {
      ok = 1;
      break;
    }
    int x;
    int y;
    for (i = 0; i < 9; i++) {
      x = tmp.x + d[i][0];
      y = tmp.y + d[i][1];
      if (!chk(x, y, tmp.k + 1)) continue;
      vis[x][y][tmp.k + 1] = 1;
      qq.push(node(x, y, tmp.k + 1));
    }
  }
  if (ok)
    puts("WIN");
  else
    puts("LOSE");
  return 0;
}
