#include using namespace std; #define N 11 #define S 26 int n; char t[N]; char st[N]; struct ptr { int pair, next, back, ilan; }; ptr p[S+1]; bool find(int i, int sm) { if (i == -1) { return true; } int likod = S; int l = p[likod].next; while (l != -1) { int sunod = p[l].next; int r = p[l].pair; int s = p[l].back; int v = p[l].ilan; for (int c = l; c < r; c++) { for (int d = 0; d < v; d++) { if ((sm + c + s + d) % 10 == t[i]) { int mid = likod; if (l < c && d) { p[mid].next = l; p[l].pair = c; p[l].ilan = d; mid = l; } int c1 = c+1; if (c1 < r && v-1-d) { p[mid].next = c1; p[c1].pair = r; p[c1].back = s+d+1; p[c1].ilan = v-1-d; mid = c1; } p[mid].next = sunod; if (find(i-1, sm+c)) { st[i] = c + 'a'; return true; } } } } p[likod].next = l; p[l].next = sunod; p[l].pair = r; p[l].ilan = v; likod = l; l = sunod; } return false; } void solve() { scanf("%s", t); n = strlen(t); for (int i = 0; i < n; i++) t[i] -= '0'; p[0].pair = S; p[0].next = -1; p[0].back = 0; p[0].ilan = n; p[S].next = 0; st[n] = 0; puts(find(n-1, 0) ? st : "-1"); } int main() { int z; scanf("%d%*s", &z); while (z--) solve(); }