#include<iostream>
using namespace std;
//歐拉路徑+并查集+字典樹
//首先把這些顏色看成結點,同色相連,那么就形成了一幅圖
//能夠按題要求連接起來那么就是說每個棒即每條邊走一次,這便是歐拉圖
//對于歐拉圖的判斷,有兩個,首先判斷連通性,在連通性的前提下判斷各節點的度數,有兩個奇結點或者全偶
//并查集是將各節點歸并到首節點,這樣在查詢時可以知道度數
//字典樹用來給顏色賦編號

//把同種顏色的都匯在一個點上,那么由他們衍生出去的就是邊,故從該中顏色的個數就可以知道該結點的度數,初始為0
int a[500001],b[500001];
void start()//初始化并查集
{
    int i;
    for(i=0;i<500001;i++)
    {
        a[i]=i;
        b[i]=0;//起始該顏色個數都為0                
        }
    }
   
int find(int x)
{
    int r=x,p;
    while(a[r]!=r)r=a[r];
    while(r!=x)
    {
          p=a[x];a[x]=r;x=p;       
          }
    return r;     
    }

void unit(int x,int y)
{
    int t1=find(x),t2=find(y);
    a[t2]=t1;//合并   
    }
   
typedef struct Trie
{
    int id;//這個表示顏色的id
    Trie *next[26];   
    };
   
Trie *s,*t,num[5000001];
int pos,id;
Trie head;
void build(Trie &head)
{
    int i;
    for(i=0;i<26;i++)
    {
        head.next[i]=0;            
        }
    head.id=-1;
    id=0;    
    }   
int insert(char *b)
{
    s=&head;
    int i=0,j,k,len=strlen(b);
    for(i=0;i<len;i++)
    {
        if(s->next[b[i]-'a']==NULL)break;
        s=s->next[b[i]-'a'];             
        }
    for(j=i;j<len;j++)
    {
        t=&num[pos++];
        for(k=0;k<26;k++)
        {
            t->next[k]=0;            
            }           
        t->id=-1;
        s->next[b[j]-'a']=t;
        s=t;     
        }   
    if(s->id==-1)//獲得該顏色的編號,如果還未賦值,那么就是之前的累加
    {
       s->id=id++;         
       }              
    return s->id;  
    }
   
bool liantong()//判斷是否連通,如果連通那么從任意一點都課到達0點
{
    int i,beg=find(0);
    for(i=1;i<id;i++)
    {
        if(find(i)!=beg)return 0;            
        }
    return 1;   
    }

bool oula()//判斷是否為歐拉圖
{
    int count=0,i;
    for(i=0;i<id;i++)
    {
        if(b[i]%2)count++;            
        }
    if(count>2)return 0;
    return 1;//兩個奇數次點或全為偶數點    
    }                        
int main()
{
    char s1[20],s2[20];
    pos=0;
    start();
    build(head);
    int x,y,fx,fy;
    int c=0;
    while(scanf("%s%s",s1,s2)!=EOF)
    {                     
          x=insert(s1);
          y=insert(s2);
//          cout<<"x="<<x<<" y="<<y<<endl;
          b[x]++;
          b[y]++;
//          cout<<b[x]<<" "<<b[y]<<endl;
          unit(x,y);
//          c++;
//          if(c==5)break;                   
          }
    if(liantong()==0)printf("Impossible\n");
    else if(oula()==0)printf("Impossible\n");
    else printf("Possible\n");
//    system("pause");    
    return 0;
    }