#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:10000000")
using namespace std;
const int INF = (int)1E8;
const int NMAX = 1010;
const long double EPS = 1E-9;
string s, a, b;
bool solve() {
  vector<int> v1;
  for (int i = 0; i < int(int((s).size())); ++i) {
    if (i + int((a).size()) - 1 >= int((s).size())) continue;
    bool g = true;
    for (int j = 0; j < int(int((a).size())); ++j)
      if (s[i + j] != a[j]) g = false;
    if (g) v1.push_back(i);
  }
  vector<int> v2;
  for (int i = 0; i < int(int((s).size())); ++i) {
    if (i + int((b).size()) - 1 >= int((s).size())) continue;
    bool g = true;
    for (int j = 0; j < int(int((b).size())); ++j)
      if (s[i + j] != b[j]) g = false;
    if (g) v2.push_back(i);
  }
  for (int i = 0; i < int(int((v1).size())); ++i)
    for (int j = 0; j < int(int((v2).size())); ++j)
      if (v1[i] + int((a).size()) - 1 < v2[j]) return true;
  return false;
}
int main() {
  cin >> s >> a >> b;
  bool f1 = solve();
  reverse((s).begin(), (s).end());
  bool f2 = solve();
  if (f1 && f2)
    cout << "both";
  else if (f1 && !f2)
    cout << "forward";
  else if (!f1 && f2)
    cout << "backward";
  else
    cout << "fantasy";
  return 0;
}
