#include <bits/stdc++.h>
using namespace std;
template <typename T, typename U>
ostream &operator<<(ostream &os, const pair<T, U> &r) {
  os << "(" << r.first << "," << r.second << ")";
  return os;
}
inline int nxt() {
  int first;
  scanf("%d", &first);
  return first;
}
long long gcd(long long a, long long b) {
  while (b > 0) {
    a %= b;
    swap(a, b);
  }
  return a;
}
template <typename T>
T sqr(T a) {
  return a * a;
}
char s[10][10];
int n = 8;
char used[10][10][20];
char ok[10][10][20];
struct State {
  int first, second, d;
};
void solve() {
  for (int i = 0; i < n; ++i) {
    scanf("%s", s[i]);
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
      if (s[i][j] == 'S') {
        for (int k = 0; i + k < n; ++k) {
          ok[i + k][j][k] = 1;
        }
      }
    }
  }
  queue<State> q;
  q.push(State{n - 1, 0, 0});
  used[n - 1][0][0] = 1;
  int dx[] = {0, 0, 0, 1, 1, 1, -1, -1, -1};
  int dy[] = {1, 0, -1, 1, 0, -1, 1, 0, -1};
  while (!q.empty()) {
    State v = q.front();
    q.pop();
    for (int i = 0; i < 9; ++i) {
      State to;
      to.first = v.first + dx[i];
      to.second = v.second + dy[i];
      to.d = v.d + 1;
      if (to.d >= 20) continue;
      if (to.first >= 0 && to.second >= 0 && to.first < n && to.second < n) {
        if (!used[to.first][to.second][to.d] &&
            !ok[to.first][to.second][to.d] &&
            !ok[to.first][to.second][to.d - 1]) {
          used[to.first][to.second][to.d] = 1;
          q.push(to);
        }
      }
    }
  }
  int ok = 0;
  for (int i = 0; i < 20; ++i) {
    ok |= used[0][n - 1][i];
  }
  if (ok) {
    cout << "WIN\n";
  } else {
    cout << "LOSE\n";
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  solve();
  return 0;
}
