#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
typedef long long int lli;
const lli inf = 1e9;

lli modadd(lli a, lli b, lli mod){
    lli res = (a+b)%mod;
    while(res<0) res+=mod;
    return res;
}

bool numlex(lli a, lli b){
    if(a > b) return false;
    return to_string(a) < to_string(b);
}

lli binsearch(lli a, lli lb, lli ub){
    if(!numlex(a, ub)) return ub+1;
    while(lb < ub){
        lli mid = (lb +ub)/2;
        if(numlex(a, mid)){
            ub = mid;
        }else{
            lb = mid+1;
        }
    }
    return lb;
}

lli solve(lli a, lli b, lli p){
    vector<lli> dp(b-a+2, 0);
    lli res = 0;
    for(lli i=0; i<b-a+1; i++){
        dp[i+1] += dp[i];
        dp[i]++;
        res = modadd(res, dp[i], p);
        lli low=1, up=10;
        for(; low<=inf; low*=10, up*=10){
            if(up < a || low > b) continue;
            lli ret = binsearch(a+i, low, up-1);
            if(ret == up) continue;
            if(ret <= b) dp[ret-a] = modadd(dp[ret-a], dp[i], p);
            if(up <= b) dp[up-a] = modadd(dp[up-a], -dp[i], p);
        }
        
    }
    return res;

}

int main(){
    while(1){
        int a,b,p;
        cin >> a >> b >> p;
        if(a==0) break;
        cout << solve(a,b,p) << endl;
    }
    return 0;
}

