#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e3 + 10, oo = maxn;
int n, m;
char s[maxn], t[maxn];
int a[maxn];
int dp[maxn][maxn];
void myMax(int &a, int b) {
  if (a < b) {
    a = b;
  }
}
int main() {
  int i, j, k, x, y;
  scanf("%s", s + 1);
  n = strlen(s + 1);
  scanf("%s", t + 1);
  m = strlen(t + 1);
  for (i = n; i >= m; i--) {
    for (j = i, k = 0; j; j--) {
      if (s[j] == t[m - k] && ++k == m) {
        break;
      }
    }
    a[i] = k == m ? i - j + 1 : oo;
  }
  for (; i; i--) {
    a[i] = oo;
  }
  dp[0][0] = 0;
  for (i = (1); i <= (n); i++) {
    for (j = (0); j <= (i); j++) {
      dp[i][j] = 0;
      if (j < i) {
        dp[i][j] = dp[i - 1][j];
      }
      if (j) {
        myMax(dp[i][j], dp[i - 1][j - 1]);
      }
      if (a[i] != oo && (y = j - a[i] + m) >= 0 && (x = i - a[i]) >= y) {
        myMax(dp[i][j], dp[x][y] + 1);
      }
    }
  }
  for (i = (0); i <= (n); i++) {
    printf("%d%c", dp[n][i], " \n"[i == n]);
  }
  return 0;
}
