#include <bits/stdc++.h>
using namespace std;
char p[1000004], s[204];
char key[200][200];
int ans[2001];
int min_ans[2001];
int main(void) {
  gets(p);
  gets(s);
  int k;
  scanf("%d", &k);
  vector<char> m[k + 3];
  int len = strlen(p);
  int i, j, l, h;
  for (i = 0; i < len; i++) {
    m[i % k].push_back(p[i]);
  }
  int len2 = strlen(s);
  int qq = 0;
  for (l = k; l >= 1; l--) {
    for (i = 0; i < k; i++) ans[i] = 0;
    int fail = 0;
    for (i = 0; i < len2; i++) key[i / l][i % l] = s[i];
    int last = k - 1;
    for (i = l - 1; i >= 0; i--) {
      int nf;
      for (j = last; j >= i; j--) {
        nf = 1;
        int A = len / k;
        if (len % k >= j + 1) A++;
        int B = len2 / l;
        if (len2 % l >= i + 1) B++;
        if (A != B) continue;
        int ok = 1;
        for (h = 0; h < A; h++)
          if (m[j][h] != key[h][i]) {
            ok = 0;
            break;
          }
        if (ok == 1) {
          ans[j] = 1;
          last = j - 1;
          nf = 0;
          break;
        }
      }
      if (nf == 1) {
        fail = 1;
        break;
      }
    }
    if (fail == 0) {
      qq++;
      if (qq == 1)
        for (i = 0; i < k; i++) min_ans[i] = ans[i];
      else
        for (i = 0; i < k; i++) {
          if (ans[i] == 0 && min_ans[i] == 1) {
            for (j = 0; j < k; j++) min_ans[j] = ans[j];
            break;
          } else if (ans[i] == 1 && min_ans[i] == 0)
            break;
        }
    }
  }
  int aaa;
  if (qq == 0)
    printf("0");
  else
    for (i = 0; i < k; i++) printf("%d", min_ans[i]);
  printf("\n");
  return 0;
}
