#include <bits/stdc++.h>
using namespace std;
bool vis[2010][210], f[2010][210];
char p[1000010], s[210], ans[2010], _ans[2010];
int n, m, k, blo;
void solve(int l, int r) {
  memset(vis, true, sizeof(vis));
  for (int i = 1; i <= k; ++i)
    for (int j = i; j <= n; j += k)
      for (int q = 1; q <= i && q <= m; ++q)
        vis[i][q] &= (p[j] == s[(j - 1) / k * l + q]);
  memset(f, false, sizeof(f));
  f[k + 1][0] = true;
  for (int i = k; i >= n % k + 1; --i)
    for (int j = 0; j <= k - i + 1 && j <= m; ++j) {
      f[i][j] = f[i + 1][j];
      if (vis[i][l - j + 1] && j) f[i][j] |= f[i + 1][j - 1];
    }
  for (int i = 0; i <= k && i <= m; ++i)
    if (i != l - r) f[n % k + 1][i] = false;
  for (int i = n % k; i; --i)
    for (int j = 0; j <= k - i + 1 && j <= m; ++j) {
      f[i][j] = f[i + 1][j];
      if (vis[i][l - j + 1] && j) f[i][j] |= f[i + 1][j - 1];
    }
  int tmp;
  if (!f[1][l]) {
    for (int i = 1; i <= k; ++i) ans[i] = 127;
    return;
  } else
    tmp = l;
  for (int i = 1; i <= k; ++i) {
    if (f[i + 1][tmp])
      ans[i] = '0';
    else
      ans[i] = '1', --tmp;
  }
}
int main() {
  gets(p + 1), gets(s + 1);
  scanf("%d", &k);
  n = strlen(p + 1), m = strlen(s + 1), blo = n / k;
  for (int i = 1; i <= k; ++i) _ans[i] = 127;
  if (!blo) {
    solve(m, m);
    for (int i = 1; i <= k; ++i) _ans[i] = ans[i];
  } else {
    for (int l = m / blo; l && m - l * blo <= l && m - l * blo <= n % k; --l) {
      solve(l, m - l * blo);
      bool flg = true;
      for (int i = 1; i <= k; ++i) {
        if (ans[i] < _ans[i]) break;
        if (_ans[i] < ans[i]) {
          flg = false;
          break;
        }
      }
      if (flg)
        for (int i = 1; i <= k; ++i) _ans[i] = ans[i];
    }
  }
  if (_ans[1] == 127) {
    printf("0");
    return 0;
  }
  for (int i = 1; i <= k; ++i) printf("%c", _ans[i]);
  return 0;
}
