#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 定义单向链表
typedef struct __LinkedList_ts {
    char value;
    struct __LinkedList_ts* next;
} LinkedList_ts;

// 新建链表节点
LinkedList_ts* LinkedList_new(char value)
{
    LinkedList_ts* result = NULL;

    result = (LinkedList_ts*)malloc(sizeof(LinkedList_ts));
    result->value = value;
    result->next = NULL;

    return result;
}

// 添加节点并排序
LinkedList_ts* LinkedList_add(LinkedList_ts* head, char value)
{
    LinkedList_ts* result = NULL;
    LinkedList_ts* curr = NULL;
    LinkedList_ts* next = NULL;
    LinkedList_ts* node = NULL;

    node = LinkedList_new(value);
    if (head == NULL) {
        head = node;
    } else {
        for (curr=head; curr!=NULL; curr = curr->next) {
            if (value >= curr->value) {
                next = curr->next;
                if (next == NULL) {
                    curr->next = node;
                    break;
                } else {
                    if (value <= next->value) {
                        curr->next = node;
                        node->next = next;
                        break;
                    } else {}
                }
            } else {
                node->next = head;
                head = node;
                break;
            }
        }
    }
    result = head;

    return result;
}

int main() {
    char s[1001] = {};
    LinkedList_ts* head = NULL;
    LinkedList_ts* curr = NULL;
    uint32_t length = 0,i;

    scanf("%s", s);
    length = strlen(s);
    // 便利字符串并使用链表排序
    for (i=0; i<length; ++i) {
        head = LinkedList_add(head, s[i]);
    }

    // 输出排序后的链表
    for (curr=head; curr!=NULL; curr = curr->next) {
        printf("%c", curr->value);
    }

    return 0;
}