#Python, 453 363 bytes
Python, 453 363 bytes
s,n=input() o="""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&_?!"'.,""" p="""∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Zɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz⅋‾¿¡„,˙'""".decode('utf8') s=map(''.join,zip(*[iter(s+' '*(n-1))]*n)) for i in range(len(s)): if i%2:s[i]=''.join(p[o.find(c)].encode('utf8')for c in s[i][::-1]) for l in s:print l