// D (run time)
// $ dmd -O -version=Runtime -run C.d > out.txt
import std.array;
import std.conv;
import std.string;
string solveAll(string s)
{
return s.splitLines().solveEach(1);
}
string solveEach(string[] lines, int i)
{
if( i == lines.length )
return "";
// std.algorithm.map doesn't work in compile time yet.
int[] t;
foreach(s; lines[i].split())
t ~= s.to!int();
return text("Case #", i, ": ", solve(t[0], t[1]), "\n", lines.solveEach(i+1));
}
int solve(int A, int B)
{
int cnt = 0;
foreach(x; A..B+1)
{
bool[int] used;
string xs = x.text();
foreach(i; 1..xs.length) {
int y = (xs[i..$] ~ xs[0..i]).to!int();
if( x<y && y<=B )
used[y] = true;
}
cnt += used.length;
}
return cnt;
}
immutable inputFileName = "C.in";
version(RunTime)
{
import std.file, std.stdio;
void main() { inputFileName.readText().solveAll().write(); }
}
else
{
pragma(msg, import(inputFileName).solveAll());
}
Ly8gRCAocnVuIHRpbWUpCi8vICAgJCBkbWQgLU8gLXZlcnNpb249UnVudGltZSAtcnVuIEMuZCA+IG91dC50eHQKaW1wb3J0IHN0ZC5hcnJheTsKaW1wb3J0IHN0ZC5jb252OwppbXBvcnQgc3RkLnN0cmluZzsKCnN0cmluZyBzb2x2ZUFsbChzdHJpbmcgcykKewoJcmV0dXJuIHMuc3BsaXRMaW5lcygpLnNvbHZlRWFjaCgxKTsKfQoKc3RyaW5nIHNvbHZlRWFjaChzdHJpbmdbXSBsaW5lcywgaW50IGkpCnsKCWlmKCBpID09IGxpbmVzLmxlbmd0aCApCgkJcmV0dXJuICIiOwoKCS8vIHN0ZC5hbGdvcml0aG0ubWFwIGRvZXNuJ3Qgd29yayBpbiBjb21waWxlIHRpbWUgeWV0LgoJaW50W10gdDsKCWZvcmVhY2goczsgbGluZXNbaV0uc3BsaXQoKSkKCQl0IH49IHMudG8haW50KCk7CglyZXR1cm4gdGV4dCgiQ2FzZSAjIiwgaSwgIjogIiwgc29sdmUodFswXSwgdFsxXSksICJcbiIsIGxpbmVzLnNvbHZlRWFjaChpKzEpKTsKfQoKaW50IHNvbHZlKGludCBBLCBpbnQgQikKewoJaW50IGNudCA9IDA7Cglmb3JlYWNoKHg7IEEuLkIrMSkKCXsKCQlib29sW2ludF0gdXNlZDsKCgkJc3RyaW5nIHhzID0geC50ZXh0KCk7CgkJZm9yZWFjaChpOyAxLi54cy5sZW5ndGgpIHsKCQkJaW50IHkgPSAoeHNbaS4uJF0gfiB4c1swLi5pXSkudG8haW50KCk7CgkJCWlmKCB4PHkgJiYgeTw9QiApCgkJCQl1c2VkW3ldID0gdHJ1ZTsKCQl9CgkJY250ICs9IHVzZWQubGVuZ3RoOwoJfQoJcmV0dXJuIGNudDsKfQoKaW1tdXRhYmxlIGlucHV0RmlsZU5hbWUgPSAiQy5pbiI7Cgp2ZXJzaW9uKFJ1blRpbWUpCnsKCWltcG9ydCBzdGQuZmlsZSwgc3RkLnN0ZGlvOwoJdm9pZCBtYWluKCkgeyBpbnB1dEZpbGVOYW1lLnJlYWRUZXh0KCkuc29sdmVBbGwoKS53cml0ZSgpOyB9Cn0KZWxzZQp7CglwcmFnbWEobXNnLCBpbXBvcnQoaW5wdXRGaWxlTmFtZSkuc29sdmVBbGwoKSk7Cn0K