The pass would be somewhat below (the number is the index used in your queue). The example is not that clear because they don't really have many duplicates to be groupped together. If there is no number, the queue at that index is not being used.
/*
AAAAA, z!<>!, BbaDd, OoOoo, p[>!!
pass: 1 from least significant position (last position)
33 = z!<>!, p[>!!
65 = AAAAA
100 = BbaDd
111 = OoOoo
Result: z!<>!, p[>!!, AAAAA, BbaDd, OoOoo
pass: 2 (character used from the list -- >, !, A, D, o)
33 = p[>!!
62 = z!<>!
65 = AAAAA
68 = BbaDd
111 = OoOoo
Result: p[>!!, z!<>!, AAAAA, BbaDd, OoOoo
pass: 3 (character used from the list -- >, <, A, a, O)
60 = z!<>!
62 = p[>!!
65 = AAAAA
79 = OoOoo
97 = BbaDd
Result: z!<>!, p[>!!, AAAAA, OoOoo, BbaDd
pass: 4 (character used from the list -- !, [, A, o, b)
33 = z!<>!
65 = AAAAA
91 = p[>!!
98 = BbaDd
111 = OoOoo
Result: z!<>!, AAAAA, p[>!!, BbaDd, OoOoo
pass: 5 (character used from the list -- z, A, p, B, O)
65 = AAAAA
100 = BbaDd
111 = OoOoo
112 = p[>!!
122 = z!<>!
Result: AAAAA, BbaDd, OoOoo, p[>!!, z!<>!
*/