#include <bits/stdc++.h>
using namespace std;
int main() {
  string s, s1, s2;
  cin >> s >> s1 >> s2;
  bool fw = false;
  int m1 = false;
  int n = int((s).size());
  for (int i = (0); i < (n); ++i) {
    if (m1) {
      bool bx = true;
      if (i + int((s2).size()) > n) break;
      for (int j = (0); j < (int((s2).size())); ++j) {
        if (s[i + j] != s2[j]) {
          bx = false;
          break;
        }
      }
      if (bx) {
        fw = true;
        break;
      }
    } else {
      bool bx = true;
      if (i + int((s1).size()) > n) break;
      for (int j = (0); j < (int((s1).size())); ++j) {
        if (s[i + j] != s1[j]) {
          bx = false;
          break;
        }
      }
      if (bx) {
        m1 = true;
        i += int((s1).size()) - 1;
      }
    }
  }
  bool fww = fw;
  fw = false;
  m1 = false;
  reverse((s).begin(), (s).end());
  for (int i = (0); i < (n); ++i) {
    if (m1) {
      bool bx = true;
      if (i + int((s2).size()) > n) break;
      for (int j = (0); j < (int((s2).size())); ++j) {
        if (s[i + j] != s2[j]) {
          bx = false;
          break;
        }
      }
      if (bx) {
        fw = true;
        break;
      }
    } else {
      bool bx = true;
      if (i + int((s1).size()) > n) break;
      for (int j = (0); j < (int((s1).size())); ++j) {
        if (s[i + j] != s1[j]) {
          bx = false;
          break;
        }
      }
      if (bx) {
        m1 = true;
        i += int((s1).size()) - 1;
      }
    }
  }
  if (!fww && fw) {
    cout << "backward\n";
    return 0;
  }
  if (fww && !fw) {
    cout << "forward\n";
    return 0;
  }
  if (fww && fw) {
    cout << "both\n";
    return 0;
  }
  if (!fww && !fw) {
    cout << "fantasy\n";
    return 0;
  }
  return 0;
}
