from
sys
import
argv
def
gen_words
(
word
)
:
yield
word
sub
=
[
'aA@'
,
'bB8'
,
'cC'
,
'dD'
,
'eE3'
,
'fF'
,
'gG6'
,
'hH#'
,
'iIlL1!'
,
'jJ'
,
'kK'
,
'mM'
,
'nN'
,
'oO0'
,
'pP'
,
'qQ'
,
'rR'
,
'sSzZ5$'
,
'tT7'
,
'uUvV'
,
'wW'
,
'xX'
,
'yY'
]
def
subs
(
l
)
:
for
i
,
s
in
enumerate
(
sub
)
:
if
l
in
s:
if
s.
index
(
l
)
<
len
(
s
)
-
1
:
return
s
[
s.
index
(
l
)
+
1
]
return
l
def
reset_before
(
word
,
index
)
:
new_word
=
""
for
i
in
range
(
0
,
index
)
:
for
s
in
sub:
if
word
[
i
]
in
s:
new_word +
=
s
[
0
]
if
len
(
new_word
)
==
i:
new_word +
=
word
[
i
]
return
new_word + word
[
index:
]
index
=
0
while
True
:
l
=
word
[
index
]
subs_l
=
subs
(
l
)
if
subs_l
!=
l:
p1
=
""
if
index
==
0
else
word
[
:index
]
p2
=
subs_l
p3
=
""
if
index
==
len
(
word
)
else
word
[
index+
1
:
]
word
=
p1 + p2 + p3
word
=
reset_before
(
word
,
index
)
index
=
0
yield
word
else
:
index
=
index +
1
if
index
>=
len
(
word
)
:
break
word
=
argv
[
1
]
for
w
in
gen_words
(
word
)
:
print
w