from re import *
n, p= map ( input , [ "Username: " , "Password: " ] )
c, U, L= lambda x:len ( split( "[%s]" %x, p) ) , "A-Z" , "a-z"
print ( [ "OK." , "Nope." ] [ any ( [ 8 > len ( p) > 12 , 2 > c( U) > 9 , 2 > c( L) > 9 , 3 > c( U+L) , match( U+L, p) , 2 > c( "0-9" ) , n in p, n[ ::-1 ] in p, any ( c( x) > 3 for x in p) , len ( findall( "(.)\\ 1" , p) ) > 1 , c( ' ^=&#,;"><[|)' ) > 1 ] ) ] )
# --- end of solution ---
# length output:
print ( "\n This python 3 code is {} bytes long." .format ( len ( """
from re import*
n,p=map(input,["Username: ","Password: "])
c,U,L=lambda x:len(split("[%s]"%x,p)),"A-Z","a-z"
print(["OK.","Nope."][any([8>len(p)>12,2>c(U)>9,2>c(L)>9,3>c(U+L),match(U+L,p),2>c("0-9"),n in p,n[::-1]in p,any(c(x)>3 for x in p),len(findall("(.)\\ 1",p))>1,c(' ^=&#,;"><[|)')>1])])
""" .strip ( ) ) ) )
# Additional debug output:
print ( "\n Debug output: check results (True -> password failed this check)" )
print ( "length 8-12: " , 8 > len ( p) > 12 )
print ( "uppercase 1-8: " , 2 > c( U) > 9 )
print ( "lowercase 1-8: " , 2 > c( L) > 9 )
print ( "letters 2+: " , 3 > c( U+L) )
print ( "1st is letter: " , bool ( match( U+L, p) ) )
print ( "has digits: " , 2 > c( "0-9" ) )
print ( "not name: " , n in p)
print ( "not rev. name: " , n[ ::-1 ] in p)
print ( "max 3 same: " , any ( c( x) > 3 for x in p) )
print ( "max 1 pair: " , len ( findall( "(.)\\ 1" , p) ) > 1 )
print ( "no special: " , c( ' ^=&#,;"><[|)' ) > 1 )
ZnJvbSByZSBpbXBvcnQqCm4scD1tYXAoaW5wdXQsWyJVc2VybmFtZTogIiwiUGFzc3dvcmQ6ICJdKQpjLFUsTD1sYW1iZGEgeDpsZW4oc3BsaXQoIlslc10iJXgscCkpLCJBLVoiLCJhLXoiCnByaW50KFsiT0suIiwiTm9wZS4iXVthbnkoWzg+bGVuKHApPjEyLDI+YyhVKT45LDI+YyhMKT45LDM+YyhVK0wpLG1hdGNoKFUrTCxwKSwyPmMoIjAtOSIpLG4gaW4gcCxuWzo6LTFdaW4gcCxhbnkoYyh4KT4zIGZvciB4IGluIHApLGxlbihmaW5kYWxsKCIoLilcXDEiLHApKT4xLGMoJyBePSYjLDsiPjxbfCknKT4xXSldKQoKIyAtLS0gZW5kIG9mIHNvbHV0aW9uIC0tLQoKIyBsZW5ndGggb3V0cHV0OiAKcHJpbnQoIlxuVGhpcyBweXRob24gMyBjb2RlIGlzIHt9IGJ5dGVzIGxvbmcuIi5mb3JtYXQobGVuKCIiIgpmcm9tIHJlIGltcG9ydCoKbixwPW1hcChpbnB1dCxbIlVzZXJuYW1lOiAiLCJQYXNzd29yZDogIl0pCmMsVSxMPWxhbWJkYSB4OmxlbihzcGxpdCgiWyVzXSIleCxwKSksIkEtWiIsImEteiIKcHJpbnQoWyJPSy4iLCJOb3BlLiJdW2FueShbOD5sZW4ocCk+MTIsMj5jKFUpPjksMj5jKEwpPjksMz5jKFUrTCksbWF0Y2goVStMLHApLDI+YygiMC05IiksbiBpbiBwLG5bOjotMV1pbiBwLGFueShjKHgpPjMgZm9yIHggaW4gcCksbGVuKGZpbmRhbGwoIiguKVxcMSIscCkpPjEsYygnIF49JiMsOyI+PFt8KScpPjFdKV0pCiIiIi5zdHJpcCgpKSkpCgojIEFkZGl0aW9uYWwgZGVidWcgb3V0cHV0OgpwcmludCgiXG5EZWJ1ZyBvdXRwdXQ6IGNoZWNrIHJlc3VsdHMgKFRydWUgLT4gcGFzc3dvcmQgZmFpbGVkIHRoaXMgY2hlY2spIikKcHJpbnQoImxlbmd0aCA4LTEyOiAiLCA4PmxlbihwKT4xMikKcHJpbnQoInVwcGVyY2FzZSAxLTg6ICIsIDI+YyhVKT45KQpwcmludCgibG93ZXJjYXNlIDEtODogIiwgMj5jKEwpPjkpCnByaW50KCJsZXR0ZXJzIDIrOiAiLCAzPmMoVStMKSkKcHJpbnQoIjFzdCBpcyBsZXR0ZXI6ICIsIGJvb2wobWF0Y2goVStMLHApKSkKcHJpbnQoImhhcyBkaWdpdHM6ICIsIDI+YygiMC05IikpCnByaW50KCJub3QgbmFtZTogIiwgbiBpbiBwKQpwcmludCgibm90IHJldi4gbmFtZTogIiwgbls6Oi0xXWluIHApCnByaW50KCJtYXggMyBzYW1lOiAiLCBhbnkoYyh4KT4zIGZvciB4IGluIHApKQpwcmludCgibWF4IDEgcGFpcjogIiwgbGVuKGZpbmRhbGwoIiguKVxcMSIscCkpPjEpCnByaW50KCJubyBzcGVjaWFsOiAiLCBjKCcgXj0mIyw7Ij48W3wpJyk+MSkK