As usual in graphics, some decisions are needed on what is of most interest, what of less interest and what of no interest at all.
The grouping is stated to be important. It seems that being able to look at both individual changes and the pattern of changes, pre to post, should be important. Much of that detail is, or would be, lost in lumping each set of scores to box plots or histograms.
Other answers to date discard the user identifiers. It is easy to agree that such identifiers are the least informative part of the data; at the same time being able to look up an odd result (which person did that?) might be a detail to keep. Even if the design were anonymous, in the full project (or a similar one) there might be other data on each person.
What we don't know is the sample size of the full group. A design that works fine with a sample of 12 (presumably a preliminary sample; perhaps just a made-up sample to give the flavour) might fail to scale well to 120 (or 1200!).
A simple design, not yet shown, is just a scatter plot of post versus pre. Ties on pre and post might be resolved by jittering symbols (shaking them apart with random noise) or showing the number of ties by symbol size.
The design here focuses on showing change, sorting on pre and then post within groups. For broader discussion, see e.g.
Cox, N.J. 2009. Paired, parallel, or profile plots for changes, correlations, and other comparisons. Stata Journal 9(4): 621-639
freely accessible here
Many readers will be able to access a copy of a minor classic:
McNeil, Don. 1992. On graphing paired data. The American Statistician.
The identifiers are kept in this design.
For a (much) larger sample size, the identifiers would have to go, as they wouldn't be readable (short of an interactive design in which a mouse-over revealed identifiers on request). However, many parallel arrows should still be discernible individually with a moderate sample size. (There is an example in my paper cited earlier.)
I'd assign different arrow colours to positive and negative changes. For this small a sample, even the little use of color seems a little busy; for a larger sample it might be essential.
I used Stata; code is shown for the record.
input group user pre post
1 1 5 4
1 2 1 2
1 3 5 5
1 4 4 5
1 5 0 5
1 6 0 4
2 7 5 5
2 8 2 4
2 9 4 6
2 10 3 2
2 11 1 6
2 12 0 3
bysort group (pre post) : gen id = _n
gen where = -1
label val group group
label def group 1 "A then B" 2 "B then A"
set scheme s1color
twoway pcarrow pre id post id, by(group, legend(off) note("")) ///
xla(none) yla(0/6, ang(h)) xtitle("") msize(medium) mc(blue) ///
ytitle(pre and post) subtitle(,fcolor(ltblue*0.2)) aspect(1) ///
|| scatter pre id, ms(O) msize(medium) ///
|| scatter where id, ms(none) mla(user) mlabpos(12) mlabsize(medium) ///