#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
const int mod = (int)1e+9 + 7;
const double pi = acos(-1.);
const int maxn = 100100;
int main() {
  {
    srand(time(0));
    const string file = "";
    if (!file.empty()) {
      freopen((file + ".in").c_str(), "r", stdin);
      freopen((file + ".out").c_str(), "w", stdout);
    }
  }
  string s, t, r;
  getline(cin, s);
  getline(cin, t);
  getline(cin, r);
  int ns = s.length();
  int i, j;
  bool ok1 = 0;
  for (i = 0; i < ns; i++) {
    if (i + t.length() <= ns) {
      ok1 = 1;
      for (int j = 0; j < t.length(); j++) {
        if (s[i + j] != t[j]) {
          ok1 = 0;
          break;
        }
      }
    }
    if (ok1) break;
  }
  bool ok2 = 0;
  for (i += t.length(); i < ns; i++) {
    if (i + r.length() <= ns) {
      ok2 = 1;
      for (int j = 0; j < r.length(); j++) {
        if (s[i + j] != r[j]) {
          ok2 = 0;
          break;
        }
      }
    }
    if (ok2) break;
  }
  bool oks1 = ((ok1 || t.empty()) && (ok2 || r.empty()));
  reverse(s.begin(), s.end());
  ok1 = 0;
  for (i = 0; i < ns; i++) {
    if (i + t.length() <= ns) {
      ok1 = 1;
      for (int j = 0; j < t.length(); j++) {
        if (s[i + j] != t[j]) {
          ok1 = 0;
          break;
        }
      }
    }
    if (ok1) break;
  }
  ok2 = 0;
  for (i += t.length(); i < ns; i++) {
    if (i + r.length() <= ns) {
      ok2 = 1;
      for (int j = 0; j < r.length(); j++) {
        if (s[i + j] != r[j]) {
          ok2 = 0;
          break;
        }
      }
    }
    if (ok2) break;
  }
  bool oks2 = ((ok1 || t.empty()) && (ok2 || r.empty()));
  if (oks1) {
    if (oks2) {
      printf("both");
    } else {
      printf("forward");
    }
  } else {
    if (oks2) {
      printf("backward");
    } else {
      printf("fantasy");
    }
  }
  return (0);
}
