# Palindrome Pain | codechef solution

## Problem:-

You are given two integers $�$ and $�$. You need to construct two different strings ${�}_{1}$ and ${�}_{2}$ consisting of only the characters $\text{‘}�\text{’}$ and $\text{‘}�\text{’}$, such that the following conditions are satisfied:

1. Both ${�}_{1}$ and ${�}_{2}$ are palindromes.
2. Both ${�}_{1}$ and ${�}_{2}$ should contain exactly $�$ occurrences of $\mathtt{\text{a}}$ and $�$ occurrences of $\mathtt{\text{b}}$.

If there are multiple possible answers, you may print any of them. If it is not possible to construct two distinct strings satisfying the conditions, print $-1$ instead.

### Input Format

• The first line of input will contain a single integer $�$, denoting the number of test cases. Then the test cases follow.
• Each test case consists of a single line of input containing two space-separated integers $�,�$.

### Output Format

For each test case:

• If it is not possible to construct two distinct strings satisfying the conditions, print $-1$
• Otherwise, print two lines — the first should contain the string ${�}_{1}$ and the second should contain ${�}_{2}$
• If there are multiple possible answers, you may print any of them.

### Constraints

• $1\le �\le 1000$
• $1\le �,�\le 1{0}^{3}$

### Sample 1:

Input
Output
2
2 4
3 3
abbbba
babbab
-1

### Explanation:

Test case $1$: The three palindromes containing $2$ $\mathtt{\text{a}}$-s and $4$ $\mathtt{\text{b}}$-s are $\mathtt{\text{abbbba}},\mathtt{\text{babbab}},$ and $\mathtt{\text{bbaabb}}$. Printing any two of these is a valid answer.

Test case $2$: There are no palindromes containing $3$ each of $\mathtt{\text{a}}$ and $\mathtt{\text{b}}$.

Code(c++):-

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

void solve() {
int X, Y; cin >> X >> Y;
if((X%2==1 && Y%2==1) || X==1 || Y==1) {
cout << -1 << endl;
return;
}
string s1(X/2, 'a');
s1.append(Y/2, 'b');
string s2(s1);
reverse(s2.begin(), s2.end());
cout << s1;
if(X%2==1)
cout << 'a';
if(Y%2==1)
cout << 'b';
cout << s2 << endl;
cout << s2;
if(X%2==1)
cout << 'a';
if(Y%2==1)
cout << 'b';
cout << s1 << endl;
}

int main() {
ios_base::sync_with_stdio(false), cin.tie(nullptr);
int T; cin >> T;
while(T--)
solve();
}

Code(Java):-

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Codechef
{
public static void main (String[] args) throws java.lang.Exception
{
Scanner sc=new Scanner(System.in);
int T=sc.nextInt();
while(T-->0){
int a=sc.nextInt();
int b=sc.nextInt();
if((a%2==1 && b%2==1) || a==1 || b==1){
System.out.println("-1");
}
else if(a%2==0 && b%2==0){
String str="";
for(int i=0;i<a/2;i++){
str+="a";
}
for(int i=0;i<b;i++){
str+="b";
}
for(int i=0;i<a/2;i++){
str+="a";
}
System.out.println(str);
str="";
for(int i=0;i<b/2;i++){
str+="b";
}
for(int i=0;i<a;i++){
str+="a";
}
for(int i=0;i<b/2;i++){
str+="b";
}
System.out.println(str);
}
else if(a%2==0){
String str="";
for(int i=0;i<a/2;i++){
str+="a";
}
for(int i=0;i<b;i++){
str+="b";
}
for(int i=0;i<a/2;i++){
str+="a";
}
System.out.println(str);
str="";
for(int i=0;i<b/2;i++){
str+="b";
}
for(int i=0;i<a/2;i++){
str+="a";
}
str+="b";
for(int i=0;i<a/2;i++){
str+="a";
}
for(int i=0;i<b/2;i++){
str+="b";
}
System.out.println(str);
}
else if(b%2==0){
String str="";
for(int i=0;i<b/2;i++){
str+="b";
}
for(int i=0;i<a;i++){
str+="a";
}
for(int i=0;i<b/2;i++){
str+="b";
}
System.out.println(str);
str="";
for(int i=0;i<a/2;i++){
str+="a";
}
for(int i=0;i<b/2;i++){
str+="b";
}
str+="a";
for(int i=0;i<b/2;i++){
str+="b";
}
for(int i=0;i<a/2;i++){
str+="a";
}
System.out.println(str);
}
}
}
}

### Recommended Post :-

HCL Coding Questions:-

Capgemini Coding Questions:-
iMocha coding Questions:-
Tech Mahindra coding questions:-
Unthinkable Solutions coding questions:-