import java.util.Scanner;
class Main {
public int[] solution(String s, char t) {
int[] answer = new int[s.length()];
//거리를 위한 변수를 높은 값으로 지정한 이유
//어차피 오른쪽으로 탐색해서 1001이라는 값이 들어가더라도
//왼쪽으로 탐색해서 거리 값이 정상적으로 들어간다.
//0으로 지정해놓으면 자기 자신을 가리키는 변수와 중복이 되기때문도 있다!
int p = 1000; //거리를 위한 변수
//오른쪽부터 탐색
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) == t) {
p = 0; //자기 자신은 거리가 0
answer[i] = p;
} else {
p++;
answer[i] = p;
}
System.out.print(answer[i] + " ");
}
System.out.println();
p=1000;
//왼쪽 다시 탐색
for(int i = s.length()-1; i >=0; i--) {
if (s.charAt(i) == t) {
p = 0; //자기 자신은 거리가 0
//answer[i] = p; 다시 넣을 필요 없음
} else {
p++;
//둘 중 작은 값을 넣어라.
answer[i] = Math.min(answer[i], p);
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.next();
char c = kb.next().charAt(0);
for(int x : T.solution(str, c)){
System.out.print(x + " ");
}
}
}