#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,fma")
#pragma GCC optimize("unroll-loops")
using namespace std;
bitset<200000> bt[26], ans;
int p[26];
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  for (int i = 0; i < 26; i++) cin >> p[i], --p[i];
  string s, t;
  cin >> s >> t;
  for (int i = 0; i < t.size(); i++) bt[t[i] - 'a'].set(i);
  ans.set();
  for (int i = 0; i < s.size(); i++)
    ans &= (bt[s[i] - 'a'] | bt[p[s[i] - 'a']]) >> i;
  for (int i = 0; i <= t.size() - s.size(); i++) cout << ans[i];
  return 0;
}
