rendered paste body#include <stdio.h>#include <stdlib.h>#include <string.h>void print_arr(const char *arr, int size){ int i; for(i = 0; i < size; i++) printf("%c", arr[i]); puts("");}int factorial(int n){ if(n <= 1) return 1; else return n * factorial(n-1);}char *permutation(const char *arr, int size, int num){ char *arr2 = calloc(sizeof(char), size); arr2 = memcpy(arr2, arr, size*sizeof(char)); int factor = 1; int i = 2; for(; i <= size; i++) { factor *= i-1; int f_index = (i - ((num / factor) % i)) - 1; int adjusted_index = i-1; int temp = arr2[f_index]; arr2[f_index] = arr2[adjusted_index]; arr2[adjusted_index] = temp; } return arr2;}int main(){ int factor = factorial(size); char arr[] = "cookie"; int size = strlen(arr); int i = 0; for(i = 0; i < factor; i++) { char *arr2 = permutation(arr, size, i); print_arr(arr2, size); free(arr2); } return 0;}