#include <stdio.h>

int main() {

    int a[5];

    long long x;

    int flag = 0;

    int k = 0;

    long long haoshu[100000]={0};//赋初值好习惯

    for (long long x = 99999; x >= 0; x--) {

        long long temp = x;//不要改变x的值,因为x在for循环中,少修改

        flag=0;//注意重置flag

        while (temp) {

            for (int i = 0; i < 5; i++) {

                a[i] = temp % 10;

                temp /= 10;

            }

        }

        for (int i = 0; i < 4; i++) {

            for (int j = i + 1; j <= 4; j++) {

                if (a[i] == a[j]) {

                    flag = 1;

                    break;

                }

            }//用一个大小为5的数组来存储所有位置

            if (flag == 1)//如果存在相同数位,就跳出循环

            {

                break;

            }

        }

        if(flag==0)

        {

            k++;

            haoshu[k]=x;

        }

    }

    int m;

    scanf("%d",&m);//注意此处scanf要在k=m前面,不然k永远赋初值0

    k=m;

    printf("%05lld",haoshu[k]);//用百分号0xlld可以输出需要的前导0

   

    return 0;

}