#include "stdio.h"
#include "string.h"
#include "math.h"
#include "stdlib.h"
#include "time.h"



void convert(char *dict, int dictlen, long long value, char *password){
    
    //int i=; //integer part
    int r=0; // remiander 

    do{
        r = value % dictlen;
        *password = *(dict+r);
        password = password+1;
        value = value / dictlen;
    }while(value>0);
}

void swap(char *a, char *b) {
    char temp = *a;
    *a = *b;
    *b = temp;
}

void randomize(char arr[], int n) {
    srand(time(NULL));
    int i;
    for(i = n-1; i > 0; i--) {
        int j = rand() % (i+1);
        swap(&arr[i], &arr[j]);
    }
}


int main(){

    //char dict[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char dict[] = "abcd";
    int dictlen = strlen(dict);
    // shuffle the dictionary if you like
    //randomize(dict, dictlen);
    //printf("%s\n", dict);

    int passwordlen = 4;

    long long int range = pow(dictlen, passwordlen);

    char password[passwordlen];

    for(int i=0; i<passwordlen; i++)
        *(password+i) = dict[0];

  
    for(long long int i=0; i<range; i++){
        convert(dict, dictlen, i, password);
        printf("%s\n", password);
    }
     

}