#include <bits/stdc++.h>
using namespace std;
long long bin_pow(long long x, long long y, long long m) {
  long long ans;
  if (y <= 0) return 1;
  ans = bin_pow(x, y / 2, m);
  if (y % 2 == 0) return (((ans % m) * (ans % m)) % m);
  return (x % m * ((ans % m * ans % m))) % m;
}
long long mult(long long a, long long b, long long m) {
  long long ans = ((a % m) * (b % m)) % m;
  return ans;
}
long long sum(long long a, long long b, long long m) {
  long long ans = (a % m + b % m) % m;
  return ans;
}
long long diff(long long a, long long b, long long m) {
  long long ans = ((a % m) - (b % m) + m) % m;
  return ans;
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
void swap(long long &a, long long &b) {
  long long tm = a;
  a = b;
  b = tm;
}
long long compute_lps_array(string s) {
  string s1 = s;
  reverse(s1.begin(), s1.end());
  s = s + "$" + s1;
  long long sz = s.size();
  vector<long long> lps(sz + 1, 0);
  lps[0] = 0;
  for (long long i = 1; i < sz; i++) {
    long long j = lps[i - 1];
    while (j != 0 && (s[i] != s[j])) j = lps[j - 1];
    if (s[i] == s[j]) j++;
    lps[i] = j;
  }
  return lps[sz - 1];
}
long long nCr(long long n, long long r, long long m) {
  long long tm1 = bin_pow(r, 998244353 - 2, 998244353);
  long long tm2 = bin_pow(m, 998244353 - 2, 998244353);
  long long tm3 = n % 998244353;
  long long ans = mult(tm3, mult(tm1, tm2, 998244353), 998244353);
  return ans;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long t = 1;
  while (t--) {
    string s, t;
    long long ans = 0;
    cin >> s >> t;
    long long sz1 = s.size();
    long long sz2 = t.size();
    vector<long long> pre(sz2 + 2, 0), sfx(sz2 + 2, 0);
    long long j = 0;
    for (long long i = 0; i < sz1; i++) {
      if (s[i] == t[j]) {
        pre[j] = i;
        j++;
        if (j >= sz2) break;
      }
    }
    j = sz2 - 1;
    for (long long i = sz1 - 1; i >= 0; i--) {
      if (s[i] == t[j]) {
        sfx[j] = i;
        j--;
        if (j == -1) break;
      }
    }
    ans = max(sfx[0], sz1 - pre[sz2 - 1] - 1LL);
    for (long long i = 0; i < sz2 - 1; i++) {
      long long df = sfx[i + 1] - pre[i] - 1;
      ans = max(ans, df);
    }
    cout << ans << endl;
  }
}
