#include <iostream>

using namespace std;

long long wackysort(long long value) {
  if (value < 10) return value;
  int maxdig = -1; int maxdigpos = -1;
  int pos = 0;
  for (long long copy = value; copy > 0; copy /= 10, pos++)
    if ((copy % 10) > maxdig) {
      maxdig = copy % 10;
      maxdigpos = pos;
  }
  long long power = 1;
  for (int i=1;i<pos;++i) power *= 10;
  long long mpower = 1;
  for (int i=0;i<maxdigpos;++i) mpower *= 10;
  if (mpower == power && (value % mpower == 0)) return value;
  if (mpower == power && (value % mpower < mpower / 10)) 
    return wackysort(value % mpower * 10 + value / mpower * mpower);
  power *= maxdig;
  return power + wackysort(value / (mpower * 10) * mpower + value % mpower);
}

bool anagrams(long long a, long long b) {
  return (wackysort(a) == wackysort(b));
}

bool are_exclusive_w(long long a, long long b) {
  cout << "doing " << a << " and " << b << endl;
  if (a == 0) return true;
  if (b == 0) return true;
  if (a % 10 == b % 10) return false;
  if (a % 10 > b % 10)
    return are_exclusive_w(a, b/10);
  if (a % 10 < b % 10)
    return are_exclusive_w(a/10, b);
}
                                                                                
bool are_exclusive(long long a, long long b) {
  return (are_exclusive_w(wackysort(a),wackysort(b)));
}


int main() {
  cout << are_exclusive(312,504) << "\n";
}
