n = int(raw_input('Ingrese numero'))
vector = []
for i in range(1, n+1):
vector.append('A')
print vector
contador = 1
def desarrolla(vector):
# la paso un vector y tiene que desarrollar
# todas las posibilidades, cambiando SOLO el valor del último
# con valores posteriores al último
global contador
for a in range(65, 91):
if chr(a) <= vector[n-1]:
continue
vector[n-1] = chr(a)
contador += 1
print vector
def aumenta_uno(i):
global contador
# HAY QUE AUMENTAR EN UN PUNTO EL VALOR DEL ORDEN i
for t in range(i+1, n):
vector[t] = 'A' # comienza de nuevo el los de orden siguiente
if vector[i] == 'Z':
if i == 0:
print 'PROCESO FINALIZADO'
return
# ha llegado al final. Reinicia el orden i y aumenta uno en el (i-1)
vector[i] = 'A'
aumenta_uno(i-1)
else:
# aumenta en uno
vector[i] = chr(ord(vector[i])+1)
contador += 1
print vector
while True:
desarrolla(vector)
cambio = False
for t in range(n-1, -1, -1):
if vector[t] != 'Z':
# aumenta un punto en el primero que no sea Z
# contando de derecha a izquierda
aumenta_uno(t)
cambio = True
break # sale del bucle for
if not cambio:
break
print 'Total Variaciones con Repeticion: %s' % contador