#include <bits/stdc++.h>
using namespace std;
char b[1000050], a[1000050];
int n, m, p, P;
bool c[2050], ans[2050], Ans;
bool Calc(int x, int y, int z, int o, int u) {
  for (; o >= z; o--) {
    bool Flag = false;
    while (y >= x) {
      bool flag = true;
      for (int j = y, k = o; j <= n && k <= m; j += p, k += u)
        if (a[j] != b[k] || ((j + p > n) ^ (k + u > m))) {
          flag = false;
          break;
        }
      if (flag) {
        c[y] = 1;
        y--;
        Flag = true;
        break;
      }
      y--;
    }
    if (!Flag) return false;
  }
  return true;
}
void Put() {
  for (int i = 1; i <= P; i++) putchar(ans[i] ? '1' : '0');
  puts("");
}
void PUUUUUT() {
  if (Ans)
    for (int i = 1; i <= p; i++)
      if (ans[i] && !c[i])
        break;
      else if (!ans[i] && c[i])
        return;
  for (int i = 1; i <= p; i++) ans[i] = c[i];
  Ans = true;
}
void Solve() {
  int k = n / p, l = n % p;
  for (int i = 0; i <= l; i++)
    if ((m - i) % k == 0 && (m - i) / k - i <= p - l) {
      if (Calc(1, l, 1, i, (m - i) / k) &&
          Calc(l + 1, p, i + 1, (m - i) / k, (m - i) / k))
        PUUUUUT();
      memset(c, 0, sizeof(c));
    }
  return;
}
int main() {
  gets(a + 1);
  gets(b + 1);
  scanf("%d", &P);
  n = strlen(a + 1);
  m = strlen(b + 1);
  p = min(P, n);
  Solve();
  if (!Ans)
    puts("0");
  else
    Put();
  return 0;
}
