#include <bits/stdc++.h>
using namespace std;
char s1[1100000], s2[210];
char key[2100], ans[2100];
bool shit;
int n, m, k;
inline void gen() {
  shit = 1;
  bool sur = 0;
  for (int i = 1; i <= k; i++) {
    if (key[i] < ans[i]) {
      sur = 1;
      break;
    } else if (key[i] > ans[i])
      break;
  }
  if (sur) {
    for (int i = 1; i <= k; i++) ans[i] = key[i];
  }
}
int cnt, yuk;
void work(int len) {
  int yu = m - cnt * len;
  if (yu > yuk || yu > len) return;
  int st, now = yu;
  for (st = yuk; st >= 1 && now; st--) {
    bool bk = 1;
    for (int j = 0; j <= cnt; j++) {
      if (s1[j * k + st] != s2[j * len + now]) {
        bk = 0;
        break;
      }
    }
    if (bk == 1)
      key[st] = '1', now--;
    else
      key[st] = '0';
  }
  if (!now) {
    for (; st >= 1; st--) key[st] = '0';
  } else
    return;
  now = len;
  for (st = k; st > yuk && now > yu; st--) {
    bool bk = 1;
    for (int j = 0; j < cnt; j++) {
      if (s1[j * k + st] != s2[j * len + now]) {
        bk = 0;
        break;
      }
    }
    if (bk == 1)
      key[st] = '1', now--;
    else
      key[st] = '0';
  }
  if (now == yu) {
    for (; st > yuk; st--) key[st] = '0';
    gen();
  }
}
int main() {
  gets(s1 + 1);
  gets(s2 + 1);
  scanf("%d", &k);
  n = strlen(s1 + 1);
  m = strlen(s2 + 1);
  for (int i = 1; i <= k; i++) ans[i] = '1';
  cnt = n / k;
  yuk = n % k;
  if (!cnt) {
    for (int i = n + 1; i <= k; i++) ans[i] = '0';
    k = n;
    cnt = 1;
    yuk = 0;
    work(m);
    if (!shit)
      printf("0\n");
    else
      printf("%s\n", ans + 1);
    return 0;
  }
  int limit = m / cnt;
  for (int i = 1; i <= limit; i++) work(i);
  if (!shit)
    printf("0\n");
  else
    printf("%s\n", ans + 1);
  return 0;
}
