#include <bits/stdc++.h>
using namespace std;
template <typename T>
int size(T& a) {
  return (int)a.size();
}
template <typename T>
T sqr(T a) {
  return a * a;
}
#pragma comment(linker, "/STACK:60777216")
const int INF = int(1e9);
char s[10][10];
bool can(int i, int j) { return i >= 0 && i < 8 && j >= 0 && j < 8; }
bool statue(int i, int j, int t) {
  for (int u = 0; u < 8; ++u) {
    if (s[u][j] == 'S') {
      int dif = (i - u);
      if (t == dif) {
        return false;
      }
    }
  }
  return true;
}
struct pos {
  int i, j, t;
  pos() {}
  pos(int i, int j, int t) : i(i), j(j), t(t) {}
};
int dist[8][8][200];
int dj[9] = {+1, +1, 0, -1, -1, -1, 0, 1, 0};
int di[9] = {0, +1, +1, +1, 0, -1, -1, -1, 0};
int main() {
  queue<pos> q;
  for (int i = (0); i < (8); ++i) gets(s[i]);
  memset((dist), (255), sizeof(dist));
  for (int i = (0); i < (8); ++i)
    for (int j = (0); j < (8); ++j)
      if (s[i][j] == 'M') {
        q.push(pos(i, j, 0));
        dist[i][j][0] = 0;
      }
  while (size(q)) {
    pos p = q.front();
    q.pop();
    if (s[p.i][p.j] == 'A') {
      cout << "WIN";
      exit(0);
    }
    for (int u = (0); u < (9); ++u) {
      int ni = p.i + di[u];
      int nj = p.j + dj[u];
      if (can(ni, nj) && statue(ni, nj, p.t) && statue(ni, nj, p.t + 1) &&
          dist[ni][nj][p.t + 1] == -1) {
        dist[ni][nj][p.t + 1] = 1;
        q.push(pos(ni, nj, p.t + 1));
      }
    }
  }
  for (int i = (0); i < (8); ++i)
    for (int j = (0); j < (8); ++j)
      if (s[i][j] == 'A') {
        for (int t = (0); t < (200); ++t)
          if (dist[i][j][t] != -1) {
            cout << "WIN";
            exit(0);
          }
      }
  cout << "LOSE";
}
