#include <bits/stdc++.h>
using namespace std;
void _fill_int(int* p, int val, int rep) {
  int i;
  for (i = 0; i < rep; i++) p[i] = val;
}
int GETi() {
  int i;
  scanf("%d", &i);
  return i;
}
template <class T>
T sqr(T val) {
  return val * val;
}
string P, S;
int K;
int OK[2001][201];
void solve() {
  int r, i, j, k, l, x, y, tx, ty;
  char hoge[20001];
  getline(cin, P);
  getline(cin, S);
  K = GETi();
  int rep = P.size() / K, rem = P.size() % K;
  if (rem == 0) rep--, rem = K;
  string ret = "Z";
  for (int a2 = 0; a2 <= (K - rem) % K; a2++) {
    int a1 = S.size() - a2 * rep;
    if (a1 % (rep + 1)) continue;
    a1 /= (rep + 1);
    if (a1 < 0 || a1 > rem) continue;
    for (x = 0; x < K; x++)
      for (y = 0; y < a1 + a2; y++) {
        OK[x][y] = 1;
        for (i = y, j = x; j < P.size() && i < S.size(); j += K, i += a1 + a2)
          if (P[j] != S[i]) OK[x][y] = 0;
      }
    string tt = "";
    j = a2 + a1;
    for (x = K - 1; x >= 0; x--) {
      if (j > 0 && OK[x][j - 1] &&
          ((x >= rem && j > a1) || (x < rem && j <= a1)))
        tt += "1", j--;
      else
        tt += "0";
    }
    if (j == 0) {
      reverse(tt.begin(), tt.end());
      ret = min(ret, tt);
    }
  }
  if (ret == "Z") ret = "0";
  cout << ret << endl;
}
int main(int argc, char** argv) {
  if (argc > 1) freopen(argv[1], "r", stdin);
  solve();
  return 0;
}
