#include <bits/stdc++.h>
using namespace std;
static const double EPS = 1e-5;
string result_array[4] = {"fantasy", "forward", "backward", "both"};
string s[3];
int sub_min(int k, int N, int N1) {
  int index1 = 0;
  int i = 0;
  int min1 = -1;
  while (i < N) {
    char ci = s[0][i];
    if (ci == s[k][index1]) {
      index1++;
      if (index1 == N1) {
        min1 = i - (N1 - 1);
        break;
      }
    } else {
      i -= index1;
      index1 = 0;
    }
    i++;
  }
  return min1;
}
int sub_max(int k, int N, int N1) {
  int index1 = N1 - 1;
  int i = N - 1;
  int max1 = -1;
  while (i >= 0) {
    char ci = s[0][i];
    if (ci == s[k][index1]) {
      index1--;
      if (index1 == -1) {
        max1 = i;
        break;
      }
    } else {
      i += (N1 - 1) - (index1);
      index1 = N1 - 1;
    }
    i--;
  }
  return max1;
}
int main(void) {
  int i, j;
  int result = 0;
  int N, N1, N2;
  int index1, index2;
  int min1, max1, min2, max2;
  for (i = 0; i < 3; i++) {
    cin >> s[i];
  }
  N = s[0].length();
  N1 = s[1].length();
  N2 = s[2].length();
  min1 = sub_min(1, N, N1);
  max2 = sub_max(2, N, N2);
  int flag = 0;
  if ((min1 == -1) || (max2 == -1)) {
  } else if (min1 + N1 <= max2) {
    flag = 1;
  }
  string stmp;
  stmp = s[0];
  for (i = 0; i < N; i++) {
    s[0][i] = stmp[N - 1 - i];
  }
  min1 = sub_min(1, N, N1);
  max2 = sub_max(2, N, N2);
  if ((min1 == -1) || (max2 == -1)) {
  } else if (min1 + N1 <= max2) {
    flag += 2;
  }
  cout << result_array[flag];
  return 0;
}
