// -- Some adjustments for didactic reasons ----------
typedef unsigned long   uint64_t;   // ok on theseus

int putchar ( int character );
// ---------------------------------------------------

void
bubblesort(char *A, uint64_t n)
{
    uint64_t swapped;
    do {
        swapped = 0;
        for (uint64_t i=1; i<n; ++i) {
            if (A[i-1] > A[i]) {
                char tmp = A[i];
                A[i] = A[i-1];
                A[i-1] = tmp;
                swapped = 1;
            }
        }
        --n;
    } while (swapped);
}

void
puts(char *str)
{
    while (*str) {
        putchar(*str++);
    }
    putchar('\n');
}

uint64_t
strlen(char *str)
{
    char *ch = str;
    while (*ch) {
        ++ch;
    }
    return ch - str;
}

char msg[] = "hello, world!";

int
main()
{
    puts(msg);
    bubblesort(msg, strlen(msg));
    puts(msg);
}