#include <iostream>
#include <string>
using namespace std;

void sequentiallyFindStringAllUnique(string s) {
	// pad the string to size 256
	if (s.size() < 256) {
		s.append(256-s.size(),0);
	}
	// first scan, maintain a[a[i]] = a[i] property
	for (int i = 0; i<s.size(); i++) {
		while(s[((int)s[i])] != s[i]) {
			swap(s[i], s[((int)s[i])]);
		}
	}
	// second scan destroy a[a[i]] = a[i] property for duplicates
	for (int i = 0; i<s.size(); i++) {
		if(s[i] != i && (s[s[i]] == s[i])) {
			s[s[i]] = i;
		}
	}
	// third scan, output all unique chars
	for (int i = 0; i<256; i++) {
		if(s[i] == i) cout<<s[i];
	}
	cout<<endl;
}

int main() {
	sequentiallyFindStringAllUnique("aa12b33c442");
	sequentiallyFindStringAllUnique("1");
	sequentiallyFindStringAllUnique("");
	sequentiallyFindStringAllUnique("121");
	return 0;
}