#include <iostream>
#include <iomanip>
#include <cmath>
#include <algorithm>
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main() {
string str; cin>>str; ll arr[26];
for (ll i =0; i<26; i++) {
cin>>arr[i];
}
bool FullQM=1; char L,R; ll indexL,indexR;
//Full Question Marks Check
if (str[0]=='?') {
for (int i =1; i<str.length(); i++) {
if (str[i]=='?') continue;
else {FullQM =0;}
}
if (FullQM) {
for (int i =0; i<str.length(); i++) {
str[i]=='a';
}
}
//?????aaa
else {
for (int i =1; i<str.length(); i++) {
if (str[i]=='?') {continue;}
else {indexR=i; R = str[i]; break;}
}
for (int i = 'a'; i<='z'; i++) {
if (arr[i-'a']==arr[R-'a']){
for (int j = 0 ; j<indexR; j++) {
str[j]=i;
}
break;
}
}
}
}
//aa????????
if (str[str.length()-1]=='?') {
for (ll i = str.length()-1; i>0; i--) {
if (str[i]=='?') {continue;}
else{indexL = i; L = str[i]; break;}
}
for (ll i = 'a'; i<='z'; i++) {
if (arr[i-'a']==arr[L-'a']) {
for (int j = indexL+1; j<str.length(); j++) {
str[j]=i;
}
break;
}
}
}
//aa??aa
for (ll i =1; i<str.length()-1; i++) {
if (str[i]=='?') {
indexL=i-1; L=str[indexL];
for (ll j = i; j<str.length()-1; j++){if (str[j]!='?') {R=str[j]; indexR=j; break;}}
for (ll k = 'a'; k<'z'; k++) {
if (arr[k-'a']==arr[R-'a'] || arr[k-'a']==arr[L-'a']) {
for (ll m = indexL+1; m<indexR; m++) {
str[m]=k;
}
break;
}
}
i=indexR-1;
}
}
ll Stringval=0;
for (ll i =0; i<str.length()-1; i++) {
Stringval += abs(arr[str[i]-'a']-arr[str[i+1]-'a']);
}
cout<<Stringval<<'\n';
cout<<str;
}