You might look in the manpages.
The format of the output is a string of 8 characters, a possible
c %config configuration file.
d %doc documentation file.
g %ghost file (i.e. the file contents are not included in the package payload).
l %license license file.
r %readme readme file.
from the package header, followed by the file name. Each of the 8
characters denotes the result of a comparison of attribute(s) of the
file to the value of those attribute(s) recorded in the database. A
single "." (period) means the test passed, while a single "?" (question
mark) indicates the test could not be performed (e.g. file permissions
prevent reading). Otherwise, the (mnemonically emBoldened) character
denotes failure of the corresponding --verify test:
S file Size differs
M Mode differs (includes permissions and file type)
5 MD5 sum differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
For a config file, the md5 sum and size will likely different do to configuration changes. If a file is missing, the word "Missing" will be printed out on the same line as the file. If there isn't a problem, there isn't a line for that file unless you also use the verbose option.
So for your example, S? would indicate that the size of the file has changed, but you don't have permission to read the file. Try to verify the packages again as root.