#include <iostream>
#include <vector>
using namespace std;
/*
恰好有一个数相同,也就是每个数字必须且只能出现2次
最高位不能是0,当给出的数位数为奇数则答案是1100...
如果是偶数,逻辑略微复杂,情况过多,需要每个都考虑到,不是练习模式很难全部覆盖
*/
int main() {
    string data;
    cin >> data;
    if(data.size()%2 == 1) {
        for(auto i = 0; i < data.size()/2+1; i++) {
            if(i%2==0) {
                cout << "11";
            }else {
                cout << "00";
            }
        }
        cout << endl;
    } else {
        auto i = 0;
        char last = -1;
        vector<char> out;
        for(; i < data.size()/2; i++) {
            auto c = min(data[i*2],data[i*2+1]);
            if(data[i*2] != data[i*2+1]) {
                c++;
            }
            if(c == last) {
                if(c < '9') {
                    out.push_back(c+1);
                    break;
                }
                int j = i-1;        // last out p
                int k = 0;
                while(true) {
                    auto c = out[j-k];
                    auto inc = false;
                    if(c == '9') {
                        inc = true;
                    } else if(c == '8') {
                        if(j-k-1 >= 0) {
                            auto p = out[j-k-1];
                            if(p == '9') {
                                inc = true;
                            }
                        }
                    }
                    if(inc) {
                        k++;
                        if(j-k < 0) {
                            break;
                        }
                    } else {
                        break;
                    }
                }
                if(k > j) {
                    out.clear();
                    out.push_back('1');
                    i = -1;
                    break;
                } else {
                    if(j-k-1 >= 0 && out[j-k-1] == out[j-k]+1) {
                        out[j-k]+=2;
                    } else {
                        out[j-k]+=1;
                    }
                    out.erase(out.begin()+j-k+1, out.end());
                    i = j-k;
                    break;
                }
            } else {
                last = c;
                out.push_back(c);
            }
            if(c > data[i*2] || c > data[i*2+1]) {
                break;
            }
        }
        i++;
        for(auto k = 0; k < data.size()/2 - i; k++) {
            if(k % 2== 0) {
                out.push_back('0');
            } else {
                out.push_back('1');
            }
        }
        for(auto c : out) {
            cout << c << c;
        }
        cout << endl;
    }
}
// 64 位输出请用 printf("%lld")