# -*- coding: utf-8 -*-

# contarApariciones: int int -> int
# Recibe dos enteros no negativos como parametro. El primero puede contener un
# número arbitrario de digitos mientras que el segundo debe ser de un solo
# dígito (en el rango [0,9]). Cuenta la cantidad de veces que el dígito en el
# segundo parametro se repite en el primer número.
# Ejemplo: contarDigitos(10080289, 8) = 2
def contarApariciones(patron, digito):
    # Caso base: patron tiene sólo un dígito
    if patron < 10:
        if patron == digito:
            return 1
        else:
            return 0
    # Caso recursivo
    else:
        if patron % 10 == digito:
            return 1 + contarApariciones(patron/10, digito)
        else:
            return contarApariciones(patron/10, digito)

# La función podría ser facilmente extendida para aceptar que el primer
# parametro pueda ser también un número negativo, basta considerar su valor
# absoluto y aplicar el mismo procedimiento.

assert contarApariciones(801803810, 8) == 3
assert contarApariciones(100, 0) == 2
assert contarApariciones(0, 0) == 1
assert contarApariciones(0, 1) == 0
assert contarApariciones(18038401873940, 2) == 0

patron = input("patron? ")
digito = input("digito? ")
apariciones = contarApariciones(patron, digito)
print 'El digito ' + str(digito) + ' aparece ' + str(apariciones) + ' veces en ' + str(patron)
