#include <bits/stdc++.h>
using namespace std;
const int MaxN = 100000;
long long Hash[MaxN];
long long step[MaxN];
bool solve(string s, string s1, string s2) {
  if (s.length() < s1.length() + s2.length()) return false;
  long long hash1 = (long long)s1[0], hash2 = (long long)s2[0];
  step[0] = 1;
  Hash[0] = s[0];
  for (int i = 1; i < s.length(); i++) step[i] = step[i - 1] * (long long)29;
  for (int i = 1; i < s1.length(); i++)
    hash1 = hash1 + step[i] * (long long)s1[i];
  for (int i = 1; i < s2.length(); i++)
    hash2 = hash2 + step[i] * (long long)s2[i];
  for (int i = 1; i < s.length(); i++)
    Hash[i] = Hash[i - 1] + step[i] * (long long)s[i];
  int pos1 = -1;
  for (int i = s1.length() - 1; i < s.length(); i++) {
    long long cnt;
    if (i == s1.length() - 1)
      cnt = 0;
    else
      cnt = Hash[i - s1.length()];
    if (hash1 * step[i - s1.length() + 1] == Hash[i] - cnt) {
      pos1 = i;
      break;
    }
  }
  if (pos1 == -1) return false;
  for (int i = pos1 + s2.length(); i < s.length(); i++) {
    if (hash2 * step[i - s2.length() + 1] == Hash[i] - Hash[i - s2.length()])
      return true;
  }
  return false;
}
int main() {
  string s, s1, s2;
  cin >> s >> s1 >> s2;
  string revS = "";
  for (int i = s.length() - 1; i >= 0; i--) revS += s[i];
  bool ok2 = solve(revS, s1, s2);
  bool ok1 = solve(s, s1, s2);
  if (ok1 && ok2)
    cout << "both";
  else if (ok1)
    cout << "forward";
  else if (ok2)
    cout << "backward";
  else
    cout << "fantasy";
}
