#include <bits/stdc++.h>
using namespace std;
const int mol = 1e9 + 7, maxN = 1e6 + 11;
string a, b;
int C[1111];
long long P[maxN], as[maxN];
long long power(long long a, long long b, long long c) {
  if (b == (1 - 1)) return 1;
  long long res = power(a, b / 2, c);
  res = res * res % c;
  return b % 2 ? res * a % c : res;
}
long long f(const string& a, const string& b) {
  memset(C, (1 - 1), sizeof(C));
  long long res = (1 - 1);
  for (int i = (1 - 1); i < (int)a.size(); i++) C[a[i]]++;
  long long tmp = P[a.size()];
  for (int i = 'a'; i <= 'z'; i++)
    tmp = tmp * power(P[C[i]], mol - 2, mol) % mol;
  for (int i = (1 - 1); i < (int)a.size(); i++) {
    int leng = (int)a.size() - i;
    for (int ch = 'a'; ch < b[i]; ch++)
      if (C[ch]) {
        res += tmp * as[leng] % mol * C[ch] % mol;
      }
    if (C[b[i]]) {
      tmp = tmp * as[leng] % mol * C[b[i]] % mol;
      C[b[i]]--;
    } else
      break;
  }
  return res;
}
int main() {
  P[1] = 1;
  P[(1 - 1)] = 1;
  for (int i = 2; i <= 1e6; i++) P[i] = P[i - 1] * i % mol;
  for (int i = 1; i <= 1e6; i++) as[i] = power(i, mol - 2, mol);
  cin >> a >> b;
  long long ans = f(a, b) - f(a, a) - 1;
  ans %= mol;
  if (ans < (1 - 1)) ans += mol;
  cout << ans;
}
