#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <utility>
#include <cstring>
using namespace std;
typedef pair<int, int> pii;
typedef vector<pii> vpi;

struct info{
    int x,y,b,t;
    int step;
    bool isEven;
    info(int x, int y, int b, int t, int s, bool e):x(x),y(y),b(b),t(t),step(s),isEven(e){}
    info(){}
};
bool used[203][103][20][20];

int main(){
    vector<vector<vector<pii> > > next(20, vector<vector<pii> >(20));
    //next, 右左上
    //odd, 左右下
    next[0][1] = vpi{pii{4, 9}, pii{5, 10}, pii{1, 0}};
    next[0][4] = vpi{pii{5, 11}, pii{1, 6}, pii{4, 0}};
    next[0][5] = vpi{pii{1, 2}, pii{4, 3}, pii{5, 0}};
    next[1][0] = vpi{pii{6, 12}, pii{2, 7}, pii{0, 1}};
    next[1][2] = vpi{pii{0, 5}, pii{6, 11}, pii{2, 1}};
    next[1][6] = vpi{pii{2, 3}, pii{0, 4}, pii{6, 1}};
    next[2][1] = vpi{pii{7, 13}, pii{3, 8}, pii{1, 2}};
    next[2][3] = vpi{pii{1, 6}, pii{7, 12}, pii{3, 2}};
    next[2][7] = vpi{pii{3, 4}, pii{1, 0}, pii{7, 2}};
    next[3][2] = vpi{pii{8, 14}, pii{4, 9}, pii{2, 3}};
    next[3][4] = vpi{pii{2, 7}, pii{8, 13}, pii{4, 3}};
    next[3][8] = vpi{pii{4, 0}, pii{2, 1}, pii{8, 3}};
    next[4][0] = vpi{pii{3, 8}, pii{9, 14}, pii{0, 4}};
    next[4][3] = vpi{pii{9, 10}, pii{0, 5}, pii{3, 4}};
    next[4][9] = vpi{pii{0, 1}, pii{3, 2}, pii{9, 4}};
    next[5][0] = vpi{pii{10, 15}, pii{11, 16}, pii{0, 5}};
    next[5][10] = vpi{pii{11, 6}, pii{0, 1}, pii{10, 5}};
    next[5][11] = vpi{pii{0, 4}, pii{10, 9}, pii{11, 5}};
    next[6][1] = vpi{pii{11, 16}, pii{12, 17}, pii{1, 6}};
    next[6][11] = vpi{pii{12, 7}, pii{1, 2}, pii{11, 6}};
    next[6][12] = vpi{pii{1, 0}, pii{11, 5}, pii{12, 6}};
    next[7][2] = vpi{pii{12, 17}, pii{13, 18}, pii{2, 7}};
    next[7][12] = vpi{pii{13, 8}, pii{2, 3}, pii{12, 7}};
    next[7][13] = vpi{pii{2, 1}, pii{12, 6}, pii{13, 7}};
    next[8][3] = vpi{pii{13, 18}, pii{14, 19}, pii{3, 8}};
    next[8][13] = vpi{pii{14, 9}, pii{3, 4}, pii{13, 8}};
    next[8][14] = vpi{pii{3, 2}, pii{13, 7}, pii{14, 8}};
    next[9][4] = vpi{pii{14, 19}, pii{10, 15}, pii{4, 9}};
    next[9][10] = vpi{pii{4, 3}, pii{14, 8}, pii{10, 9}};
    next[9][14] = vpi{pii{10, 5}, pii{4, 0}, pii{14, 9}};
    next[10][5] = vpi{pii{9, 14}, pii{15, 19}, pii{5, 10}};
    next[10][9] = vpi{pii{15, 16}, pii{5, 11}, pii{9, 10}};
    next[10][15] = vpi{pii{5, 0}, pii{9, 4}, pii{15, 10}};
    next[11][5] = vpi{pii{16, 17}, pii{6, 12}, pii{5, 11}};
    next[11][6] = vpi{pii{5, 10}, pii{16, 15}, pii{6, 11}};
    next[11][16] = vpi{pii{6, 1}, pii{5, 0}, pii{16, 11}};
    next[12][6] = vpi{pii{17, 18}, pii{7, 13}, pii{6, 12}};
    next[12][7] = vpi{pii{6, 11}, pii{17, 16}, pii{7, 12}};
    next[12][17] = vpi{pii{7, 2}, pii{6, 1}, pii{17, 12}};
    next[13][7] = vpi{pii{18, 19}, pii{8, 14}, pii{7, 13}};
    next[13][8] = vpi{pii{7, 12}, pii{18, 17}, pii{8, 13}};
    next[13][18] = vpi{pii{8, 3}, pii{7, 2}, pii{18, 13}};
    next[14][8] = vpi{pii{19, 15}, pii{9, 10}, pii{8, 14}};
    next[14][9] = vpi{pii{8, 13}, pii{19, 18}, pii{9, 14}};
    next[14][19] = vpi{pii{9, 4}, pii{8, 3}, pii{19, 14}};
    next[15][10] = vpi{pii{19, 18}, pii{16, 17}, pii{10, 15}};
    next[15][16] = vpi{pii{10, 9}, pii{19, 14}, pii{16, 15}};
    next[15][19] = vpi{pii{16, 11}, pii{10, 5}, pii{19, 15}};
    next[16][11] = vpi{pii{15, 19}, pii{17, 18}, pii{11, 16}};
    next[16][15] = vpi{pii{17, 12}, pii{11, 6}, pii{15, 16}};
    next[16][17] = vpi{pii{11, 5}, pii{15, 10}, pii{17, 16}};
    next[17][12] = vpi{pii{16, 15}, pii{18, 19}, pii{12, 17}};
    next[17][16] = vpi{pii{18, 13}, pii{12, 7}, pii{16, 17}};
    next[17][18] = vpi{pii{12, 6}, pii{16, 11}, pii{18, 17}};
    next[18][13] = vpi{pii{17, 16}, pii{19, 15}, pii{13, 18}};
    next[18][17] = vpi{pii{19, 14}, pii{13, 8}, pii{17, 18}};
    next[18][19] = vpi{pii{13, 7}, pii{17, 12}, pii{19, 18}};
    next[19][14] = vpi{pii{18, 17}, pii{15, 16}, pii{14, 19}};
    next[19][15] = vpi{pii{14, 8}, pii{18, 13}, pii{15, 19}};
    next[19][18] = vpi{pii{15, 10}, pii{14, 9}, pii{18, 19}};

    while(1){
        int tx,ty,n;
        cin >> tx >> ty >> n;
        if(tx==0 && ty==0 && n==0) break;

        memset(used, 0, sizeof(used));
        queue<info> wait;
        wait.push(info(0, 0, 0, 5, 0, true));
        used[101][51][0][5] = true;
        int ans = -1;
        while(!wait.empty()){
            int x = wait.front().x;
            int y = wait.front().y;
            int b = wait.front().b;
            int t = wait.front().t;
            int step = wait.front().step;
            int isEven = wait.front().isEven;
            wait.pop();
            if(x == tx && y == ty && b == n){
                ans = step;
                break;
            }
            int dx[3], dy[3];
            if(isEven){
                dx[0] = 1; dx[1] = -1; dx[2] = 0;
                dy[0] = 0; dy[1] = 0; dy[2] = 1;
            }else{
                dx[0] = -1; dx[1] = 1; dx[2] = 0;
                dy[0] = 0; dy[1] = 0; dy[2] = -1;
            }
            for(int i=0; i<3; i++){
                int nx = x +dx[i];
                int ny = y +dy[i];
                int nb = next[b][t][i].first;
                int nt = next[b][t][i].second;
                if(used[nx+101][ny+51][nb][nt]) continue;
                used[nx+101][ny+51][nb][nt] = true;
                wait.push(info(nx, ny, nb, nt, step+1, !isEven));
            }
        }
        cout << ans << endl;
    }

    return 0;
}


Measured memory_bytes: 11556