AOJ 0226 - Hit and Blow

Hit&Blowの問題.
コード内はBlowがBrowになってますが気にしない.
ショートコーディングは辛かったのでやめました(技術の欠如)

#include <iostream>

int main(){
	std::string a, b;
	while(std::cin >> a >> b, a != "0"){
		int hit = 0, brow = 0, as[10] = {0}, bs[10] = {0};
		//hitの判定, browの準備
		for(int i=0;i<4;i++){
			if(a[i] == b[i])hit++;
			as[a[i]-'0']++, bs[b[i]-'0']++;
		}
		//仮のbrowを求める
		for(int i=0;i<10;i++){
			if(as[i] > 0 && bs[i] > 0)
				brow++;
		}
		//仮のbrowにはhitも含まれているので引く
		brow -= hit;
		std::cout << hit << " " << brow << std::endl;
	}
}