#include <bits/stdc++.h>
using namespace std;
int n, k;
char s[200];
char p[200];
char ans[200];
bool used[200][30];
bool brute(int pos) {
  if (pos == n) {
    puts(ans);
    exit(0);
  }
  if (ans[pos] != 0) {
    if (pos >= strlen(s) - 1) {
      if (p[pos - strlen(s) + 1] == '0') {
        bool ok = true;
        for (int j = strlen(s) - 1; j >= 0; j--) {
          if (ans[pos - j] != s[strlen(s) - 1 - j]) {
            ok = false;
            break;
          }
        }
        if (ok) return false;
      }
    }
    return brute(pos + 1);
  }
  memset(used[pos], 0, sizeof used[pos]);
  int cnt = k;
  bool need_check = false;
  if (pos >= strlen(s) - 1) {
    need_check = true;
    for (int i = strlen(s) - 1; i > 0; i--) {
      if (ans[pos - i] != s[strlen(s) - 1 - i]) {
        need_check = false;
        break;
      }
    }
  }
  for (int t = k - 1; t >= 0; t--) {
    ans[pos] = (char)('a' + t);
    if (!need_check) {
      if (brute(pos + 1)) return true;
    } else {
      if (t != s[strlen(s) - 1] - 'a') {
        if (brute(pos + 1)) return true;
      }
    }
  }
  ans[pos] = 0;
  return false;
}
int main() {
  scanf("%d %d\n", &n, &k);
  gets(s);
  gets(p);
  memset(ans, 0, sizeof ans);
  for (int i = 0; i < strlen(p); i++) {
    if (p[i] == '1') {
      for (int j = 0; j < strlen(s); j++) {
        if (ans[i + j] == 0 || ans[i + j] == s[j]) {
          ans[i + j] = s[j];
        } else {
          puts("No solution");
          return 0;
        }
      }
    }
  }
  for (int i = 0; i < strlen(p); i++) {
    if (p[i] == '0') {
      bool ok = true;
      for (int j = 0; j < strlen(s); j++) {
        if (ans[i + j] != s[j]) {
          ok = false;
          break;
        }
      }
      if (ok) {
        puts("No solution");
        return 0;
      }
    }
  }
  for (int i = 0; i < k; i++) {
    bool ok = true;
    for (int j = 0; j < strlen(s); j++) {
      if (s[j] - 'a' == i) {
        ok = false;
        break;
      }
    }
    if (ok) {
      for (int j = 0; j < n; j++) {
        if (ans[j] == 0) ans[j] = (char)('a' + i);
      }
      puts(ans);
      return 0;
    }
  }
  brute(0);
  puts("No solution");
}
