#include <iostream>
#include <string>
#include <vector>
using namespace std;
int cmpPair(int d, char a, char b)
{
int x = a - '0';
int y = b - '0';
if(d < x) return -1;
if(d > x) return 1;
if(d < y) return -1;
if(d > y) return 1;
return 0;
}
string buildMinLonger(int len)
{
string res = "";
int prev = -1;
for(int i = 0; i < len / 2; i++)
{
int d;
if(i == 0) d = 1;
else
{
if(prev != 0) d = 0;
else d = 1;
}
res += char('0' + d);
res += char('0' + d);
prev = d;
}
return res;
}
int main()
{
string x;
cin >> x;
int n = x.size();
if(n % 2 == 1)
{
cout << buildMinLonger(n + 1) << endl;
return 0;
}
int m = n / 2;
vector<vector<int> > dp(m + 1, vector<int>(11, 0));
for(int prev = 0; prev <= 10; prev++)
{
dp[m][prev] = 1;
}
for(int pos = m - 1; pos >= 0; pos--)
{
char a = x[2 * pos];
char b = x[2 * pos + 1];
for(int prev = 0; prev <= 10; prev++)
{
dp[pos][prev] = 0;
for(int d = 0; d <= 9; d++)
{
if(pos == 0 && d == 0) continue;
if(prev != 10 && d == prev) continue;
int c = cmpPair(d, a, b);
if(c < 0) continue;
if(c > 0)
{
dp[pos][prev] = 1;
break;
}
else
{
if(dp[pos + 1][d])
{
dp[pos][prev] = 1;
break;
}
}
}
}
}
if(!dp[0][10])
{
cout << buildMinLonger(n + 2) << endl;
return 0;
}
string ans = "";
int prev = 10;
bool same = true;
for(int pos = 0; pos < m; pos++)
{
if(!same)
{
int d;
for(d = 0; d <= 9; d++)
{
if(pos == 0 && d == 0) continue;
if(prev != 10 && d == prev) continue;
break;
}
ans += char('0' + d);
ans += char('0' + d);
prev = d;
continue;
}
char a = x[2 * pos];
char b = x[2 * pos + 1];
for(int d = 0; d <= 9; d++)
{
if(pos == 0 && d == 0) continue;
if(prev != 10 && d == prev) continue;
int c = cmpPair(d, a, b);
if(c < 0) continue;
if(c > 0)
{
ans += char('0' + d);
ans += char('0' + d);
prev = d;
same = false;
break;
}
else
{
if(dp[pos + 1][d])
{
ans += char('0' + d);
ans += char('0' + d);
prev = d;
break;
}
}
}
}
cout << ans << endl;
return 0;
}